首页 > 解决方案 > 从字符串数字列中查找总数

问题描述

我有一个 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 中,所有字符串数字都以相同的最小长度前缀开头。任何帮助表示赞赏:)

标签: pythonpandasdataframe

解决方案


推荐阅读