我有一个带有一个 col int 和一个 col float 的数据框:
df
# a b
# 0 3 42.00
# 1 2 3.14
df.dtypes
# a int64
# b float64
# dtype: object
我想要一个像 df.to_dict(orient='records')
提供的那样的字典列表
df.to_dict(orient='records')
[{'a': 3.0, 'b': 42.0}, {'a': 2.0, 'b': 3.1400000000000001}]
但 a
为 int
,不转换为 float
最佳答案
目前(从 Pandas 版本 0.18 开始),df.to_dict('records')
访问 NumPy 数组 df.values
。此属性将 int
列的 dtype 向上转换为 float
,以便数组可以具有单个公共(public) dtype。在这一点之后,没有希望返回所需的结果——所有整数都已转换为 float 。
因此,改为在 ayhan's 上构建和 Tom Augspurger's suggestion你可以使用列表和字典理解:
import pandas as pd
df = pd.DataFrame({'a':[3,2], 'b':[42.0,3.14]})
result = [{col:getattr(row, col) for col in df} for row in df.itertuples()]
print(result)
# [{'a': 3, 'b': 42.0}, {'a': 2, 'b': 3.1400000000000001}]
关于python - 获取东方 ='records' 的 python pandas to_dict 但没有 float 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37897527/