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?【昨天一整天都是烦人的事……】
您似乎将对象与其表示混淆了。这个 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)
| 归档时间: |
|
| 查看次数: |
3133 次 |
| 最近记录: |