我有一个 Dataframe df,它看起来像这样:
col1 col2 col3
A 123 0.1
A 1235 0.2
A 1232 0.2
A 12 0.05
B 23 0.04
B 234 0.065
B 235 0.08
B 2368 0.3
B 2369 0.25
B 23679 0.6
现在从这个df中,我想为每个组计算col2中的每个前缀值将包含多少个数字。例如对于组 AI 想要拥有
col1 col2 new_col
A 123 8
A 1235 1
A 1232 1
A 12 90
B 23 779
B 234 100
B 235 100
B 2368 10
B 2369 10
B 23679 1
再多一点 123 将包含以下一组数字: (1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239) 但 1232 和 1235 存在于不同的 df 行中,因此 10-2 = 8个数字。12 也一样。它将包含 1200 到 1299 之间的所有 100 个数字 - 不同行中的 10 个给定数字,因此是 90。
到目前为止,我遵循的逻辑如下: - 创建一个 col2 长度的列。- 找到每组的最大字符长度
df['prefix_length'] = df['col2'].str.len()
df['max_length'] = df.groupby('col1')['col2'].transform(max)
df['total_numbers'] = 10 ** (df['max_length'] - df['prefix_length'])
数据框未排序,我有很多组。在 col2 中,所有字符串数字都以相同的最小长度前缀开头。任何帮助表示赞赏:)