如何在熊猫中汇总和分组

时间:2020-08-07 00:56:21

标签: python pandas

我遵循了df,我想按customer然后按countsum分组

同时,我希望添加条件分组。

有什么办法可以做到这一点?

customer  product score
A          a       1
A          b       2
A          c       3
B          a       4
B          a       5
B          b       6

我想要的结果是跟踪

customer count sum count(product =a)  sum(product=a)
A          3    6     1                   1
B          3   15     2                   9

我的工作就是这样。

grouped=df.groupby('customer')

grouped.agg({"product":"count","score":"sum"})

谢谢

2 个答案:

答案 0 :(得分:0)

让我们尝试crosstab

s = pd.crosstab(df['customer'],df['product'], df['score'],margins=True, aggfunc=['sum','count']).drop('All')
Out[76]: 
          sum               count              
product     a    b    c All     a    b    c All
customer                                       
A         1.0  2.0  3.0   6   1.0  1.0  1.0   3
B         9.0  6.0  NaN  15   2.0  1.0  NaN   3

答案 1 :(得分:0)

import pandas as pd

df = pd.DataFrame({'customer': ['A', 'A', 'A', 'B', 'B', 'B'], 'product': ['a', 'b', 'c', 'a', 'a', 'b'], 'score':[1, 2, 3, 4, 5, 6]})
df = df[df['product']=='a']
grouped=df.groupby('customer')
grouped = grouped.agg({"product":"count","score":"sum"}).reset_index()
print(grouped)

输出:

  customer  product  score
0        A        1      1
1        B        2      9

然后将此数据框与未过滤的分组数据框合并