gpt4 book ai didi

python - 旋转整数数据帧时的浮点值(pandas - python)

转载 作者:行者123 更新时间:2023-11-28 22:18:39 25 4
gpt4 key购买 nike

我有一个巨大的 Pandas 数据框,形状像这个例子:

 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

我需要 reshape 它,所以我使用 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 的聚合和总和的初始数据集,它们都是整数。它们不仅是 float 的,而且与准确结果相差甚远。

为什么我会得到这些浮点值?有没有更好的方法来获得我想要的东西?我真的不想自己编写一个函数来在旋转数据帧之前正确地求和所有值,因为这应该正是 pivot_table() 所做的。

最佳答案

NaN 存在问题,它将所有值转换为 float,因此可能的解决方案是添加参数 fill_value=0 如果输入数据是整数:

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

因此,如果将聚合函数更改为 sum 一切正常:

dummy = dummy.pivot_table(index=['hour','new_id'],
columns='name',
values='values',
fill_value=0,
aggfunc='sum')

关于python - 旋转整数数据帧时的浮点值(pandas - python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50351530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com