python - 获取东方 ='records' 的 python pandas to_dict 但没有 float 转换

标签 python pandas

我有一个带有一个 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}]

aint,不转换为 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/

相关文章:

python - pip install 抛出值错误

python - Flask 如何通过装饰器传递 request 变量,而无需我将 request 作为参数?

python - Pandas- ValueError : Usecols do not match columns, 列预期但未找到

pandas - 如何将 adjust_text 与 plotnine 一起使用?

python - 如何在 Ubuntu 上安装 Socks/SocksIPy?

python - Selenium Python ActionChain 预制方法

python - pandas to_csv 通过添加\n 换行符或在数据框单元格中存储 numpy 数组来更改数据

python - 没有匹配时打印空数据框

python - 高效地将值从一列替换为另一列 Pandas DataFrame

python - 如何删除 Pandas 数据框中多次出现特定列的行