我遵循了df,我想按customer
然后按count
和sum
分组
同时,我希望添加条件分组。
有什么办法可以做到这一点?
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"})
谢谢
答案 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
然后将此数据框与未过滤的分组数据框合并