【发布时间】:2023-02-21 23:59:45
【问题描述】:
【问题讨论】:
-
你已经尝试了什么?你有什么问题?向我们展示您的代码,以及输出如何出乎您的意料
-
@FlorentMonin df1 = df.groupby(['Category 1', 'Date 1','Date 2'])['Paid','OS'].sum() 。输出只有 PAid 和 OS 没有别的
【问题讨论】:
当您使用 groupby 时,您作为分组依据的列包含在输出中,但作为列:
df.groupby(['Category 1', 'Date 1','Date 2'])[['Paid','OS']].sum()
会返回这样的东西:
| Paid | OS | |||
|---|---|---|---|---|
| Category 1 | Date 1 | Date 2 | ||
| Engineering | 31/03/2005 | 31/12/2022 | 521 | 4754 |
| 31/12/2005 | 31/03/2022 | 2 | 5 | |
| Marine | 31/03/2003 | 31/12/2021 | 23 | 9 |
| 31/12/2021 | 31/03/2022 | 2 | 5 |
所以,为了得到(我假设)你想要的,你可以在groupby中使用as_index=False:
df.groupby(['Category 1', 'Date 1','Date 2'], as_index=False)[['Paid','OS']].sum()
| Category 1 | Date 1 | Date 2 | Paid | OS | |
|---|---|---|---|---|---|
| 0 | Engineering | 31/03/2005 | 31/12/2022 | 521 | 4754 |
| 1 | Engineering | 31/12/2005 | 31/03/2022 | 2 | 5 |
| 2 | Marine | 31/03/2003 | 31/12/2021 | 23 | 9 |
| 3 | Marine | 31/12/2021 | 31/03/2022 | 2 | 5 |
【讨论】: