gpt4 book ai didi

python - 如何从 Pandas to_dict() 输出中删除小数

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:11 25 4
gpt4 key购买 nike

这篇文章的要点是我的原始数据中有“23”,我希望在我的结果字典中有“23”(而不是“23.0”)。以下是我尝试使用 Pandas 处理它的方法。

我的 Excel 工作表有一个编码区域列:

23
11
27
(blank)
25

最初,我创建了一个数据框,Pandas 将 Region 的 dtype 设置为 float64*

import pandas as pd
filepath = 'data_file.xlsx'
df = pd.read_excel(filepath, sheetname=0, header=0)
df

23.0
11.0
27.0
NaN
25.0

如果我使用 fillna() 将 NaN 替换为似乎可以消除小数的空格,Pandas 会将 dtype 转换为 object

df.fillna('', inplace=True)
df

23
11
27
(blank)
25

除了当我将数据帧转换为字典时我仍然得到小数:

data = df.to_dict('records')
data

[{'region': 23.0,},
{'region': 27.0,},
{'region': 11.0,},
{'region': '',},
{'region': 25.0,}]

有没有办法创建没有小数位的字典?顺便说一下,我正在编写一个通用实用程序,所以我不会总是知道列名和/或值类型,这意味着我正在寻找一个通用解决方案(相对于显式处理区域)。

非常感谢任何帮助,谢谢!

最佳答案

问题是,在 fillna('') 之后,尽管该列的类型为 object,但您的基础值仍然是 float

s = pd.Series([23., 11., 27., np.nan, 25.])

s.fillna('').iloc[0]

23.0

相反,应用格式化程序,然后替换

s.apply('{:0.0f}'.format).replace('nan', '').to_dict()

{0: '23', 1: '11', 2: '27', 3: '', 4: '25'}

关于python - 如何从 Pandas to_dict() 输出中删除小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41449765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com