[英]Pandas - group, sum and count
I have a dataframe that looks like this: 我有一个看起来像这样的数据框:
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
I want to group it by row, in each group sum up values of val_ix. 我想按行对它进行分组,在每组中汇总val_ix的值。 and count different values of i_x. 并计算i_x的不同值。 So the output should look like this: 因此输出应如下所示:
i_x row val_x
0 1 1 3
1 1 2 3
3 1 3 4
4 2 4 18
For example, if you look at the last row, it has i_x=2 because we have 2 different values in that group(5 and 6), and they add up to 5+6+7=18 例如,如果您查看最后一行,则它具有i_x = 2,因为该组中有2个不同的值(5和6),它们的总和为5 + 6 + 7 = 18
Use agg
使用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
Same as 如同
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.