Python Pandas to_dict将索引类型更改为outtype=';记录';

Python Pandas to_dict将索引类型更改为outtype=';记录';,python,pandas,indexing,records,Python,Pandas,Indexing,Records,我试图在以下数据帧上调用to_dict函数: 作为pd进口熊猫 数据={“a”:[1,2,3,4,5],“b”:[90,80,40,60,30]} df=pd.DataFrame(数据) df.将索引()重置为命令(“r”) 但是,如果我对数据帧执行浮点操作,将索引变为浮点,则会出现问题: (df*1.0)。将索引()重置为命令(“r”) 是否有人可以解释上述行为或建议解决方法,或验证这是否可能是一个错误?to_dict方法中的其他输出类型都不会如上图所示改变索引 我已经在pandas 0.14

我试图在以下数据帧上调用to_dict函数:

作为pd进口熊猫

数据={“a”:[1,2,3,4,5],“b”:[90,80,40,60,30]}

df=pd.DataFrame(数据)

df.将索引()重置为命令(“r”)

但是,如果我对数据帧执行浮点操作,将索引变为浮点,则会出现问题:

(df*1.0)。将索引()重置为命令(“r”)

是否有人可以解释上述行为或建议解决方法,或验证这是否可能是一个错误?to_dict方法中的其他输出类型都不会如上图所示改变索引

我已经在pandas 0.14和0.18(最新版本)上复制了这一点


非常感谢

这个问题已经在github上得到了回答

我将在这里传达答案,以便将问题标记为已解决,并将其从未回答问题的列表中移除

来自Github:

与索引无关,只是数据中有任何浮点数据类型

如果查看,我们将使用DataFrame.values,它返回一个NumPy数组,该数组必须具有一个数据类型(在本例中为float64)

--

该问题的解决方法是:

[x._asdict() for x in df.itertuples()]
这将生成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)])]

这看起来像一个bug,你应该提交一份报告
[{'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}]
[x._asdict() for x in df.itertuples()]
[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)])]