python - 旋转整数数据帧时的浮点值(pandas - python)
问题描述
我有一个巨大的熊猫数据框,形状像这个例子:
new_id hour names values
0 0 mark 5
0 0 matt 4
0 0 alex 3
1 0 roger 2
1 0 arthur 7
1 1 alf 8
2 1 ale 6
3 1 peter 5
3 2 tom 2
4 2 andrew 7
我需要重塑它,所以我使用pivot_table()
:
dummy=dummy.pivot_table(index=['hour','new_id'],columns='name', values='values').fillna(0)
所以它变成了
names ale alex alf andrew arthur mark matt peter roger tom
hour new_id
0 0 0.0 3.0 0.0 0.0 0.0 5.0 4.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0 7.0 0.0 0.0 0.0 2.0 0.0
1 1 0.0 0.0 8.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.0 0.0 0.0
2 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0
4 0.0 0.0 0.0 7.0 0.0 0.0 0.0 0.0 0.0 0.0
....
顺便说一句,这个小例子无法重现我的问题:在真实数据集中,当我旋转它时,我得到一些不应该存在的浮点值,因为它们是values
初始数据集的聚合和总和,它们都是整数。它们不仅是浮动的,而且与确切的结果相去甚远。
为什么我会得到这些浮点值?有没有更好的方法来得到我想要的?我真的不想自己编写一个函数来在旋转数据框之前正确汇总所有值,因为这应该正是这样pivot_table()
做的。
解决方案
存在问题NaN
s,它将所有值转换为s,因此如果输入数据为s,则float
可能的解决方案是添加参数:fill_value=0
integer
dummy=dummy.pivot_table(index=['hour','new_id'],columns='name', values='values', fill_value=0)
print (dummy)
name ale alex alf andrew arthur mark matt peter roger tom
hour new_id
0 0 0 3 0 0 0 5 4 0 0 0
1 0 0 0 0 7 0 0 0 2 0
1 1 0 0 8 0 0 0 0 0 0 0
2 6 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 5 0 0
2 3 0 0 0 0 0 0 0 0 0 2
4 0 0 0 7 0 0 0 0 0 0
中的默认聚合函数pivot_table
是mean
,因此预计输出中至少有一个浮点值,因此它将所有值转换为float
s。
因此,如果将聚合函数更改为sum
所有工作正常:
dummy = dummy.pivot_table(index=['hour','new_id'],
columns='name',
values='values',
fill_value=0,
aggfunc='sum')
推荐阅读
- angular - 使用 DomSanitizer 后,图片网址仍然不安全
- visual-studio - 如何调试Windbg?(如何获取有关 Windbg 正在做什么的信息)
- reactjs - reactjs 中的 material-ui - react 应用程序中的 @withStyles(styles) 给出语法错误:Unexpected token > @withStyles(styles)
- scala - 以不那么冗长的方式使用零常量
- html - 格式化有序列表
- CSS
- jquery - Jquery 代码不适用于重复数据
- php - 如何在新窗口中设置会话设置
- php - 提交表单 MS SQL 和 PHP 的问题
- asp.net-core-mvc - 如何在我的 .Net Core 2.1 web api 控制器中实现 Post([FromBody] IMessage msg)?
- api - 如何使用 Shopify api 为订单创建履行服务?