gpt4 book ai didi

python - 如何删除 Pandas 中不需要的 `.0` s?

转载 作者:行者123 更新时间:2023-12-01 22:08:33 24 4
gpt4 key购买 nike

如何将我的 pandas DataFrame 的列组件从浮点类型转换为实际字符串?

最初,当我read_csv 它们以科学记数法显示时:

例如1.04983E+13

我使用以下行来更改显示类型以显示所有没有小数点的数字:

pd.set_option('display.float_format', lambda x: '%.0f' % x)

最初似乎有效(没有显示小数点!):

sample_df['gpid'][0:2]
0 10498310800133
1 767838527881217

但是,当我尝试从中列出一个列表时,它清楚地包含了每个组件前面的小数 .0

list(sample_df['gpid'])[0:2]
[10498310800133.0, 767838527881217.0]

我怎样才能避免这个不需要的.0? [昨天一整天都是一件烦人的事...]

最佳答案

您似乎混淆了对象及其表示。此 DataFrame 包含 float秒。您可以按照自己喜欢的方式(作为字符串)表示这些,但是当您更改显示选项时,对象保持不变。转换为列表会发送这些 float将对象转换为 python list它有自己的 float 表示s(与 pandas 无关)并且将始终显示 .0 .

您无法更改 python list 的格式.它是内置的。您可以转换这些 float s 至 int s,通过做

list(map(int, sample_df['gpid']))[0:2]
[10498310800133, 767838527881217]

但请注意,您正在制作新对象,而不仅仅是更改它们的表示形式。这意味着任何非整数 float (即不以 .0 结尾)都将被转换为整数。

要将 pandas 值转换为字符串,请执行

sample_df['gpid'] = sample_df['gpid'].apply(lambda f: format(f, '.0f'))

输出:

              gpid
0 10498310800133
1 767838527881217

关于python - 如何删除 Pandas 中不需要的 `.0` s?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50023814/

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