我有一个看起来像这样的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中每个前缀值将包含多少个数字。例如,对于A组,我想拥有
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中,所有字符串号都以相同的最小长度前缀开头。任何帮助表示赞赏:)