熊猫分组和

时间:2020-09-02 18:08:59

标签: python pandas dataframe

我正在尝试对groupby之后的列求和,

这是我的数据

|Day       |SMSsNumber|ShortCode|
|----------|----------|---------|
|2020-08-25|647       |26243    |
|2020-08-25|6,396     |76973    |
|2020-08-25|16,615    |51532    |
|2020-08-25|315       |59230    |
|2020-08-25|4,732     |30210    |
|2020-08-25|209       |32261    |
|2020-08-25|7         |54835    |

我已经按日期分组了,但是我需要对SMSsNumber列求和。

这就是我得到的

|Day       |SMSsNumber|Codes|
|----------|----------|-----|
|2020-08-25|647       |26243|
|          |6,396     |76973|
|          |16,615    |51532|
|          |315       |59230|
|          |4,732     |30210|
|          |209       |32261|
|          |7         |54835|

我需要获取以下信息:

|Day       |SMSsNumber|Codes|
|----------|----------|-----|
|2020-08-25|28921     |26243|
|          |          |76973|
|          |          |51532|
|          |          |59230|
|          |          |30210|
|          |          |32261|
|          |          |54835|

这是我的代码

read = pd.read_csv('data.csv')
group_day = read.groupby(['Day','SMSsNumber']).sum()
group_day.to_html('test.html')
print(group_day.head())   

:c

2 个答案:

答案 0 :(得分:1)

请勿按SMS编号分组:

read.groupby('Day').sum()

如果要避免其他列,请明确选择这些列:

read.groupby('Day')[['SMSsNumber','ShortCode']].sum()

答案 1 :(得分:1)

group_day = read.groupby(['Day','SMSsNumber']).sum()

在上面的代码中,您按两列分组。

您想要的是将第一个分组,然后将第二个相加:

group_day = read.groupby(['Day'])['SMSsNumber'].sum()

如果您不指定对哪个列执行求和,则将获得所有支持该操作的列的和。