为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Pandas 对两列进行分组并计算行的总和?

如何使用 Pandas 对两列进行分组并计算行的总和?

蛊毒传说 2023-10-18 21:27:19
我有一个 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


查看完整回答
反对 回复 2023-10-18
?
冉冉说

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


查看完整回答
反对 回复 2023-10-18
  • 2 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信