Pandas 将 int 值转换为数据帧中的浮点数

sky*_*yrd 5 python csv floating-point dataframe pandas

我编写了一个脚本,它将一个 csv 文件作为输入,使用 Pandas 操作数据并创建另一个 csv 文件。

一切正常,但是pandas 默认将整数值转换为double。例如

在 csv 之前:

5f684ee8-7398-914d-9d87-7b44c37ef081,France,44,72000,No,isBool("true")
Run Code Online (Sandbox Code Playgroud)

在 csv 之后:

E84E685F-9873-4D91-9D87-7B44C37EF081,France,44.0,72000.0,No,True
Run Code Online (Sandbox Code Playgroud)

这里44和72000改为44.0和72000.0

我知道如何在数据帧中使用 apply() 将它们转换为 int,但是这个脚本将是通用的,我希望首先配置 Pandas。

基本上,如果它不是浮点数,我希望熊猫不要放 .0 。

谢谢。

B. *_* M. 2

正如评论中所述,pandas 中的某些操作可以更改数据类型。例如,请参见此页面

解决方案可以是:

df.to_csv(float_format="%.0f")
Run Code Online (Sandbox Code Playgroud)

将每个(假)浮点四舍五入为整数格式。

一个例子:

In [355]: pd.DataFrame(columns=list(range(6)), 
data=[['E84E685F-9873-4D91-9D87-7B44C37EF081', 'France', 44.0, 72000, 'No', True]]
).to_csv(float_format='%.f')
Out[355]: ',0,1,2,3,4,5\n0,E84E685F-9873-4D91-9D87-7B44C37EF081,France,44,72000,No,True\n'
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回复,但是当我添加 float_format 参数时,这次 pandas 舍入了我不想要的浮点数(例如 44.89 到 45)。 (2认同)