Python 熊猫将整型值转换为数据帧中的浮点值

Python 熊猫将整型值转换为数据帧中的浮点值,python,csv,pandas,dataframe,floating-point,Python,Csv,Pandas,Dataframe,Floating Point,我编写了一个脚本,将一个csv文件作为输入,使用pandas操作数据,并创建另一个csv文件 一切正常,但是默认情况下熊猫会将整数值转换为双精度。 e、 g 在之前的csv中: 5f684ee8-7398-914d-9d87-7b44c37ef081,France,44,72000,No,isBool("true") 在csv中: E84E685F-9873-4D91-9D87-7B44C37EF081,France,44.0,72000.0,No,True 此处44和72000更改为44.

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

一切正常,但是默认情况下熊猫会将整数值转换为双精度。 e、 g

在之前的csv中:

5f684ee8-7398-914d-9d87-7b44c37ef081,France,44,72000,No,isBool("true")
在csv中:

E84E685F-9873-4D91-9D87-7B44C37EF081,France,44.0,72000.0,No,True
此处44和72000更改为44.0和72000.0

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

基本上,如果不是浮点数,我希望熊猫不会把.0放进去


谢谢。

正如评论中所说,熊猫中的某些操作可以更改数据类型。参见示例

解决方案可以是:

df.to_csv(float_format="%.0f")
它将每个(false)浮点值舍入为整数格式

例如:

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'

与B.M.的答案类似,您可以按如下方式解析浮动:

df.to_csv(float_format=“%.10g”)

如果数字的精度不超过10位,这将强制写入不带指数的数字。因此,2147483647将呈现为
2147483647
,10-2将呈现为
0.01
。如果您有大整数(大于10位),您将遇到问题,因为这些整数将被表示为指数。

列中似乎有一些
NaN
值,因此
int
被转换为
float
通过
df[df['col']检查它。isnull()
并且可能的解决方案被替换为一些标量,如
0
-
df[['col',col1']]=df['col',col1']]。fillna()
您是否尝试根据您的要求将pandas.DataFrame.to_csv的float_格式参数设置为??它似乎做了你想做的事我刚刚试过,这次它把我的浮点值44.89转换成了45。谢谢你的回答,但是当我添加float_格式参数时,这次pandas将我不想要的浮点值(例如44.89到45)四舍五入。你有什么解决方案吗?它不起作用:
gav['steam_appid')。转换成csv(“../data/F.csv”,sep=“;”,index=False,float_format=“.10g”)