Python 熊猫将整型值转换为数据帧中的浮点值
我编写了一个脚本,将一个csv文件作为输入,使用pandas操作数据,并创建另一个csv文件 一切正常,但是默认情况下熊猫会将整数值转换为双精度。 e、 g 在之前的csv中: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.
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”)