使用transform在某些列上添加重复行数 - Pandas

时间:2017-10-16 10:55:21

标签: python pandas

我已经查看了各种SO问题,解决了计算特定列上重复行的问题,最相关的是this一个。

问题是,这个解决方案是非常具体的,我无法弄清楚如何将它推广到具有更多数据的数据帧。 我有一个包含许多列的数据框,我想添加一个名为“A_D_E_count”的新列,它将指示整个数据框中有多少行具有相同的每行A,D和E列值。

最好使用.transform函数

示例:

Out[6]: 
      A        B        C        D        E
0   294    41981    37597    39875    33364
1   294    39776    37597    37572    39171
2   294    44658    49408    43713    49408
3   294    58615    52065    43713    49408
4   294    44811    51238    42926    49408

在这个数据框架中,我想添加一个列,该列将计算包含相同A DE值的行数,因此结果将是

Out[6]: 
      A        B        C        D        E  A_D_E_count
0   294    41981    37597    39875    33364            1
1   294    39776    37597    37572    39171            1
2   294    44658    49408    43713    49408            2
3   294    58615    52065    43713    49408            2
4   294    44811    51238    42926    49408            1

1 个答案:

答案 0 :(得分:3)

我认为如果transform不需要计算size,我需要countNaN

cols = ['A','D','E']

df['A_D_E_count'] = df.groupby(cols)['A'].transform('size')
print (df)
     A      B      C      D      E  A_D_E_count
0  294  41981  37597  39875  33364            1
1  294  39776  37597  37572  39171            1
2  294  44658  49408  43713  49408            2
3  294  58615  52065  43713  49408            2
4  294  44811  51238  42926  49408            1