如何删除熊猫中不需要的`.0`?

Rot*_*ail 0 python decimal pandas

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

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

例如 1.04983E+13

我用下面这行来改变显示类型以显示所有没有小数的数字:

pd.set_option('display.float_format', lambda x: '%.0f' % x)
Run Code Online (Sandbox Code Playgroud)

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

sample_df['gpid'][0:2]
0    10498310800133
1   767838527881217
Run Code Online (Sandbox Code Playgroud)

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

list(sample_df['gpid'])[0:2]
[10498310800133.0, 767838527881217.0]
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免这种不需​​要的.0?【昨天一整天都是烦人的事……】

FHT*_*ell 5

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

您无法更改 python 的格式list。它是内置的。您可以通过执行将这些floats转换为ints

list(map(int, sample_df['gpid']))[0:2]
[10498310800133, 767838527881217]
Run Code Online (Sandbox Code Playgroud)

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

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

sample_df['gpid'] = sample_df['gpid'].apply(lambda f: format(f, '.0f'))
Run Code Online (Sandbox Code Playgroud)

输出:

              gpid
0   10498310800133
1  767838527881217
Run Code Online (Sandbox Code Playgroud)