熊猫 - 群体,总和和计数

时间:2017-09-14 16:18:38

标签: python pandas dataframe group-by

我有一个如下所示的数据框:

x = pd.DataFrame.from_dict({'row':[1, 1, 2, 3, 4,4,4], 'val_x': [1, 2, 3, 4, 5, 6, 7], 'i_x': [1, 2, 2,3, 5,5,6]})

   i_x  row  val_x
0    1    1      1
1    2    1      2
2    2    2      3
3    3    3      4
4    5    4      5
5    5    4      6
6    6    4      7

我想按行对其进行分组,在每组中总结val_ix的值。并计算i_x的不同值。所以输出应该如下所示:

   i_x  row  val_x
0    1    1      3
1    1    2      3
3    1    3      4
4    2    4      18

例如,如果你查看最后一行,它有i_x = 2,因为我们在该组中有2个不同的值(5和6),它们加起来为5 + 6 + 7 = 18

1 个答案:

答案 0 :(得分:2)

使用agg

In [593]: x.groupby('row', as_index=False).agg({'i_x': 'nunique', 'val_x': 'sum'})
Out[593]:
   row  val_x  i_x
0    1      3    2
1    2      3    1
2    3      4    1
3    4     18    2

相同
In [594]: x.groupby('row', as_index=False).agg({'i_x': pd.Series.nunique, 'val_x': np.sum})
Out[594]:
   row  val_x  i_x
0    1      3    2
1    2      3    1
2    3      4    1
3    4     18    2