【发布时间】:2021-11-03 00:13:37
【问题描述】:
使用这些数据 -
d2 = {'Division': ['DIV1', 'DIV2', 'DIV1', 'DIV3', 'DIV2'],'Region': ['DIV1-South', 'DIV2-North', 'DIV1-North', "DIV3-East", "DIV2-South"]
,'MD': ["Susie", 'Martha', "Jane", "Nichole", "Randall"], 'Month': ['JAN', 'JAN', 'FEB', 'MAR', "APR"]}
df2 = pd.DataFrame(d2)
看起来像这样:
Division Region MD Month
0 DIV1 DIV1-South Susie JAN
1 DIV2 DIV2-North Martha JAN
2 DIV1 DIV1-North Jane FEB
3 DIV3 DIV3-East Nichole MAR
4 DIV2 DIV2-South Randall APR
感谢这里的社区,我能够对这些数据进行透视以获得各个月份的总数:使用这行代码
pivoted = df.pivot_table(index=['Division', 'Region', 'NP'], columns='Month', aggfunc=len, fill_value=0)
Month APR FEB JAN MAR
Division Region MD
DIV1 DIV1-North Jane 0 1 0 0
DIV1-South Susie 0 0 1 0
DIV2 DIV2-North Martha 0 0 1 0
DIV2-South Randall 1 0 0 0
DIV3 DIV3-East Nichole 0 0 0 1
因此,这可能是不可能的,但我只在网上找到了一个参考来生成包含各个部分的小计的数据透视结果。不幸的是,这个例子不起作用。
理想的结果是:
Month APR FEB JAN MAR
Division Region MD
DIV1 DIV1-North Jane 0 1 0 0
DIV1-North SubTotal 0 1 0 0
DIV1-South Susie 0 0 1 0
DIV1-South SubTotal 0 0 1 0
DIV1 TOTAL 0 1 1 0
DIV2 DIV2-North Martha 0 0 1 0
DIV2-North SubTotal 0 0 1 0
DIV2-South Randall 1 0 0 0
DIV2-South SubTotal 1 0 0 0
DIV2 TOTAL 1 0 1 0
DIV3 DIV3-East Nichole 0 0 0 1
DIV3-East SubTotal 0 0 0 1
DIV3 TOTAL 0 0 0 1
这有点令人费解,甚至可能不可能,但由于这在 Excel 数据透视表中相当容易,我希望 Pandas 在某个地方启用了此功能,但我找不到它。 (尽管经过数天的搜索和测试,这仍然是正确的。)
【问题讨论】:
标签: python pandas pandas-groupby pivot-table