Python-汇总每列分组总计中的行

时间:2020-07-27 18:59:17

标签: python pandas dataframe group-by

我遇到了问题:

我有一个表,其中有很多这样的行和列(只是更多的行和列):

比萨消费:

df =

+------------------------------------------------------+
|      Name        Day 1 | Day 2 | Day 3 | Day 4 |Day 5|
+------------------------------------------------------+
| Michelangelo   |  1    |   5   |   2   |  1    |   5 |
| Michelangelo   |  4    |   2   |   3   |  1    |   5 |
| Donatello      |  2    |   1   |   1   |  8    |   2 |
| Leonardo       |  3    |   2   |   4   |  2    |   1 |
| Michelangelo   |  3    |   1   |   2   |  1    |   5 |
| Raphael        |  2    |   2   |   3   |  1    |   3 |
| Michelangelo   |  4    |   3   |   1   |  1    |   5 |
+------------------------------------------------------+

我想得到一张表格,其中包含每只乌龟的每日总数:

df_total =

+-------------------------------------------------------+
|      Name        Day 1 | Day 2 | Day 3 | Day 4 | Day 5|
+-------------------------------------------------------+
| Michelangelo   |  13   |   11  |   8   |  4    |   20 |
| Donatello      |  2    |   1   |   1   |  8    |   2  |
| Leonardo       |  3    |   2   |   4   |  2    |   1  |
| Raphael        |  2    |   2   |   3   |  1    |   3  |
+-------------------------------------------------------+

由于我不希望名称成为索引,所以我尝试过尝试(在许多其他方法中):

df_total = df.groupby(['Name'], axis = 0).sum().reset_index()

我得到了一个汇总行,所选内容中的每个字段在该行的每一列中都加了一个大和。米开朗基罗每天要吃56个披萨。

感谢您的关注!

2 个答案:

答案 0 :(得分:0)

只需使用不带参数pd.DataFrame.groupby.sum的{​​{1}}(按行):

axis=0

输出:

df=df.groupby('Name',as_index=False).sum()

IIUC,您可以使用df Name Day 1 Day 2 Day 3 Day 4 Day 5 0 Donatello 2 1 1 8 2 1 Leonardo 3 2 4 2 1 2 Michelangelo 12 11 8 4 20 3 Raphael 2 2 3 1 3 来获取每一行的总和(pd.DataFrame.sum):

axis=1

输出:

df['total']=df.sum(axis=1)

答案 1 :(得分:-1)

尝试一下,df.groupby(['Name'], as_index=False).sum()