我有一个数据框,其中一个col int one col浮动:
df
# a b
# 0 3 42.00
# 1 2 3.14
df.dtypes
# a int64
# b float64
# dtype: object
Run Code Online (Sandbox Code Playgroud)
我想要一个像提供的那样的词典列表 df.to_dict(orient='records')
df.to_dict(orient='records')
[{'a': 3.0, 'b': 42.0}, {'a': 2.0, 'b': 3.1400000000000001}]
Run Code Online (Sandbox Code Playgroud)
但是,a
as int
,不是浮动的
unu*_*tbu 10
目前(从Pandas版本0.18开始),df.to_dict('records')
访问NumPy阵列df.values
.此属性向上转换int
列的dtype ,float
以便该数组可以具有单个公共dtype.在此之后,没有希望返回所需的结果 - 所有的整数都已转换为浮点数.
因此,建立在ayhan和Tom Augspurger的建议上,你可以使用列表和词典理解:
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}]
Run Code Online (Sandbox Code Playgroud)