python - Pandas 数据透视表边距返回 TypeError
问题描述
从这个数据开始:
SUBJECT_CD REGULAR_QUANTITY_REQUESTED
BEDS_CD
307500099999 REG_ALGCC 26
307500099999 REG_ENGCC 26
307500099999 REG_ESCI 1
307500099999 REG_GHG2 26
307500099999 REG_GLHIST 26
307500099999 REG_LENV 26
307500099999 REG_USHG 26
307500099999 REG_USHGNF 26
310200010999 REG_ALGCC 160
310200010991 REG_ALGCC 160
310200010119 REG_ALGCC 80
310200010191 REG_ALGCC 130
310200010919 REG_ALGCC 95
310200010911 REG_LENV 95
310200099999 REG_ALGCC 150
310200099999 REG_LENV 100
310299999999 REG_ALGCC 60
310299999999 REG_GEOMCC 5
310209999999 REG_ALGCC 130
310209999999 REG_ALGTRICC 90
当我运行数据透视表时,它给了我一个错误:
TypeError: unhashable type: 'Int64Index'
这些值REGULAR_QUANTITY_REQUESTED
都是int64
所以我不确定为什么我不能在最后得到一个总和列。
代码:
pivot = pd.pivot_table(df,
index=df.index,
columns=['SUBJECT_CD'],
values=['REGULAR_QUANTITY_REQUESTED'],
aggfunc=[np.sum],
fill_value=0,
margins=True)
这在没有margins
线路的情况下有效。
解决方案
不确定有无不同的原因margins
,但错误表明问题与使用索引有关。
这里reset_index
就足够了:
pivot = pd.pivot_table(df.reset_index(),
index=['BEDS_CD'],
columns=['SUBJECT_CD'],
values=['REGULAR_QUANTITY_REQUESTED'],
aggfunc=[np.sum],
fill_value=0,
margins=True)
它给:
sum
REGULAR_QUANTITY_REQUESTED
SUBJECT_CD REG_ALGCC REG_ALGTRICC REG_ENGCC REG_ESCI REG_GEOMCC REG_GHG2 REG_GLHIST REG_LENV REG_USHG REG_USHGNF All
BEDS_CD
307500099999 26 0 26 1 0 26 26 26 26 26 183
310200010119 80 0 0 0 0 0 0 0 0 0 80
310200010191 130 0 0 0 0 0 0 0 0 0 130
310200010911 0 0 0 0 0 0 0 95 0 0 95
310200010919 95 0 0 0 0 0 0 0 0 0 95
310200010991 160 0 0 0 0 0 0 0 0 0 160
310200010999 160 0 0 0 0 0 0 0 0 0 160
310200099999 150 0 0 0 0 0 0 100 0 0 250
310209999999 130 90 0 0 0 0 0 0 0 0 220
310299999999 60 0 0 0 5 0 0 0 0 0 65
All 991 90 26 1 5 26 26 221 26 26 1438
推荐阅读
- c - 使用 scanf 将字符串存储到字符串数组中
- sql - sqlite创建表列默认值不起作用
- java - 如何解决错误“应用 BeanValidation 关系约束时出错”
- android - android:用于将验证/数据从动态 ViewPager 片段传递到活动的循环继承
- ios - 使用 didSet 导致函数多次运行
- r - 如何获得线性模型的β拟合值?
- javascript - JSON 未定义属性 - 简化验证以避免 TypeErrors
- matlab - 复制图像的行和列
- android - Kotlin:使用不同的子类多次实现泛型接口(基类是约束)
- javascript - jQuery:无法选择附加的选择选项