最佳答案
你可以设置你的index
成为“位置”和“ Assets ”并使用 stack
在所有 Period 列上,这将为您提供所需的结构。
然后是 groupby.sum()
的问题:
df_reshaped = df.set_index(['Asset','Location'])\
.stack().reset_index()\
.sort_values(by=['Asset','level_2'])\
.rename(columns={'level_2':'Period',0:'Cost'})
df_reshaped.groupby(['Asset','Location','Period'],as_index=False).sum()
打印: Asset Location Period Cost
0 A Scot P01 163
1 A Scot P02 131
2 A Scot P03 114
3 A Scot P04 176
4 B Eng P01 134
5 B Eng P02 74
6 B Eng P03 112
7 B Eng P04 33
8 C Eng P01 85
9 C Eng P02 90
10 C Eng P03 19
11 C Eng P04 68
12 C Scot P01 51
13 C Scot P02 95
14 C Scot P03 79
15 C Scot P04 62
关于python - 尝试在 Python 中使用 Pandas 复制 SUMIFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72742749/