Tsu*_*Lin 7 python indexing records pandas
我正在尝试在以下DataFrame上调用to_dict函数:
将pandas导入为pd
data = {"a":[1,2,3,4,5],"b":[90,80,40,60,30]}
df = pd.DataFrame(数据)
a b
0 1 90
1 2 80
2 3 40
3 4 60
4 5 30
Run Code Online (Sandbox Code Playgroud)
df.reset_index().to_dict( "R")
[{'a': 1, 'b': 90, 'index': 0},
{'a': 2, 'b': 80, 'index': 1},
{'a': 3, 'b': 40, 'index': 2},
{'a': 4, 'b': 60, 'index': 3},
{'a': 5, 'b': 30, 'index': 4}]
Run Code Online (Sandbox Code Playgroud)
但是,如果我对数据帧执行浮点运算,将索引变为浮点运算,则会出现问题:
(DF*1.0).reset_index().to_dict( "R")
[{'a': 1.0, 'b': 90.0, 'index': 0.0},
{'a': 2.0, 'b': 80.0, 'index': 1.0},
{'a': 3.0, 'b': 40.0, 'index': 2.0},
{'a': 4.0, 'b': 60.0, 'index': 3.0},
{'a': 5.0, 'b': 30.0, 'index': 4.0}]
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释上述行为或建议解决方法,或验证这是否可能是一个熊猫bug?to_dict方法中的其他任何外键都没有改变索引,如上所示.
我在大熊猫0.14和0.18(最新)上复制了这个
非常感谢!
这个问题已经在github上得到了解答
我将在这里传达答案,以便问题可以被标记为已解决,并从未回答的 pandas 问题的顶部列表中移出。
来自Github:
与索引无关,只是数据中有任何浮点数据类型
如果你看一下代码,我们使用 DataFrame.values,它返回一个 NumPy 数组,该数组必须具有单个 dtype(在本例中为 float64)。
——汤姆·奥格斯普格
该问题的解决方法是:
[x._asdict() for x in df.itertuples()]
Run Code Online (Sandbox Code Playgroud)
它生成 OrderedDict 对象的列表
[OrderedDict([('Index', 0), ('a', 1.0), ('b', 90)]),
OrderedDict([('Index', 1), ('a', 2.0), ('b', 80)]),
OrderedDict([('Index', 2), ('a', 3.0), ('b', 40)]),
OrderedDict([('Index', 3), ('a', 4.0), ('b', 60)]),
OrderedDict([('Index', 4), ('a', 5.0), ('b', 30)])]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
732 次 |
| 最近记录: |