对熊猫数据框中的字符串求和

时间:2020-06-04 18:57:25

标签: python python-3.x pandas

赋予数据框df一百万行:

   HOUSEID   PERSONID         my_string  
0   20000017    1    0,0,0,1-100,100,100-11,0,0    
1   20000017    1    53,53,53,0,0,0,0,0
2   20000017    1    0,0,0,0,0,12,12,12    
3   20000017    2    1-100-43,43,0,0,0,0,0,0
4   20000017    2    0,0,82-100-41,41,0,0,0,0     
5   20000017    2    0,0,0,53,53,53,0,0    
6   20000017    2    0,0,0,0,0,0,0,0    
7   20000231    1    41-100,100-41,41,0,0,0,0,0  
8   20000231    1    0,0,0,41-100,100-1,0,0,0

my_string列中,有8个(在我的实际数据帧96中)代码用','(有时多于一个数字)分隔的字符串。对于HOUSEIDPERSONID(一个人)的每个唯一组合,我希望将数字组合为“ 0”值用同一个人另一行的对应下标填充。这是所需的输出:

       HOUSEID   PERSONID         my_string  
   0   20000017    1    53,53,53,1-100,100,100-11,12,12     
   1   20000017    2    1-100-43,43,82-100-41,41,53,53,0,0   
   2   20000231    1    41-100,100-41,41,41-100,100-1,0,0,0

在某些情况下,一个人最终得到相同下标的两个值。在这种情况下,我希望将更长的代码嵌入到我的最终字符串中。

这可能吗?

如果是,怎么办?

1 个答案:

答案 0 :(得分:4)

我认为您的输入数据中存在一些差异,例如,第一组最终以9个值结尾,或者第二组中您在不同行中的同一位置具有值(非0)。

无论如何,这应该做您想要的事情,首先用逗号str.split列'my_string'并展开,使用mask用nan替换0,在两列上执行groupby ,请保持first值(不是nan)(如果有)可用,fillna的值为0表示无值,agg的值为join以返回字符串,{{1} }

reset_index