我有一个 pandas 数据框,df例如:Name Hour Activity A 4 TT A 3 TT A 5 UU B 1 TT C 1 TT D 1 TT D 2 TT D 3 UU D 4 UU下一步是如果行具有相同的列Name和值,则获取总和Activity。例如,对于这种情况Name: A和Activity: TT将给出总和7结果如下所示 TT UUA 7 5B 1 0C 1 0D 3 7是否可以使用 pandas groupby 来做这样的事情?
2 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
尝试groupby.sum并unstack
df_final = df.groupby(['Name', 'Activity']).Hour.sum().unstack(fill_value=0)
Out[177]:
Activity TT UU
Name
A 7 5
B 1 0
C 1 0
D 3 7
冉冉说
TA贡献1877条经验 获得超1个赞
Apivot_table也可以在这里工作:
df = pd.pivot_table(df, index='Name', columns='Activity', values='Hour', aggfunc='sum', fill_value=0)
df
Out[1]:
Activity TT UU
Name
A 7 5
B 1 0
C 1 0
D 3 7
从那里,您可以进行一些进一步的清理以达到:
df.columns = [''.join(col) for col in df.columns]
df = df.reset_index()
df
Out[2]:
Name TT UU
0 A 7 5
1 B 1 0
2 C 1 0
3 D 3 7
添加回答
举报
0/150
提交
取消