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

我有一个 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  UU

A   7   5

B   1   0

C   1   0

D   3   7

是否可以使用 pandas groupby 来做这样的事情?


蛊毒传说
浏览 75回答 2
2回答

牧羊人nacy

尝试groupby.sum并unstackdf_final = df.groupby(['Name', 'Activity']).Hour.sum().unstack(fill_value=0)Out[177]:Activity  TT  UUNameA          7   5B          1   0C          1   0D          3   7

冉冉说

Apivot_table也可以在这里工作:df = pd.pivot_table(df, index='Name', columns='Activity', values='Hour', aggfunc='sum', fill_value=0)dfOut[1]: Activity  TT  UUName            A          7   5B          1   0C          1   0D          3   7从那里,您可以进行一些进一步的清理以达到:df.columns = [''.join(col) for col in df.columns]df = df.reset_index()dfOut[2]:   Name  TT  UU0    A   7   51    B   1   02    C   1   03    D   3   7
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python