cqwcns 发表于 2021-5-8 15:05

python pandas透视表的问题

直接正题。pandas DataFrame是这样的:



我希望透视出这个的表:


我现在的代码是这样的:
df_box_pivot_table = pd.pivot_table(df_box, index=['更新人一级部门', '更新人二级部门'], values='更新时间分类', aggfunc='count', margins=True, margins_name='总计')

不知道要怎么改?请指教。





feihudui 发表于 2021-5-9 10:14

要变通
要变通
要变通
字数不够

cbl666 发表于 2021-5-9 10:34

feihudui 发表于 2021-5-9 10:14
要变通
要变通
要变通


学习一下   谢谢

cqwcns 发表于 2021-5-10 09:13

feihudui 发表于 2021-5-9 10:14
要变通
要变通
要变通


谢谢老铁。


我研究了一下,aggfunc='count'这样也可以,不用新建计数列,但奇葩的是values列不能在index或columns中,否则报错。
df_box_pivot_table = pd.pivot_table(df_box, index=['更新人一级部门', '更新人二级部门'], values='更新人', columns='更新时间分类',
                                    aggfunc='count', margins=True, margins_name='总计')
print(df_box_pivot_table)
另外,对于你的方法,也是可以的,但我不明白你的计数列为什么要用for,我试了,直接=1就可,即这样:

df_box['计数'] = 1

df_box_pivot_table = pd.pivot_table(df_box, index=['更新人一级部门', '更新人二级部门'], values='计数', columns='更新时间分类',
                                    aggfunc='sum', margins=True, margins_name='总计', fill_value=0)
print(df_box_pivot_table)

cqwcns 发表于 2021-5-10 09:15

feihudui 发表于 2021-5-9 10:14
要变通
要变通
要变通


谢谢指教:victory::handshake

feihudui 发表于 2021-5-10 20:25

呵呵其实一开始是想全置1的,那样也简单,但感觉缺乏灵活性,不知道后面还有没有其他的要求,就留了个活口,在这里可以修改规则,占位而已,请忽略
value不为索引和列名其实应该是需要统计的列名不能和已知的重名吧,否则他也不知道你要调用

feihudui 发表于 2021-5-10 20:28

其实正如以上这个例子,他怎么知道你要添加一个同名列cc,然后填写计数内容呢,正常就是调用修改了,所以你那种同名列既想保留现有列又想生成一个同名的新列是不行的吧
页: [1]
查看完整版本: python pandas透视表的问题