Python Pandas在新列中将列字符串值更改为浮点值

时间:2019-07-14 18:07:34

标签: python string pandas floating-point type-conversion

我有一个数据框,其中包含一列以以下格式表示的浮点值字符串(负和正浮点值) .000(3dp)。此数字在Column1中表示为字符串,我想在DataFrame中添加一column2作为float值,并将float值的字符串表示形式转换为保留3 dp的float值。我在尝试执行此操作时遇到问题,并收到错误消息“ ValueError:无法将字符串转换为float:”感谢任何帮助

代码

dataframe4['column2'] = ''
dataframe4['column2']=dataframe4['column1'].astype('float64')

#Round column1, column2 float columns to 3 decimal places

dataframe4.round({'column1': 3, 'column2': 3})

2 个答案:

答案 0 :(得分:0)

我不知道我是否完全理解您的问题,但是您可以尝试

dataframe4['column2'] = dataframe4['column1'].apply(lambda x : float(x))

编辑:如果有一些带逗号的数字,您可以尝试:

dataframe4['column2'] = dataframe4['column1'].apply(lambda x : float(x.replace(",","")))

答案 1 :(得分:0)

问题似乎是您的彩车中有逗号,例如'9,826.000'

您可以按以下方式修复

import re
re.sub(r",", "", "1,1000.20")
# returns '11000.20' and the below works
float(re.sub(r",", "", "1,1000.20"))
# you can e.g. use apply to apply to all your numbers in the DataFrame
df["new_col"] = df["old_col"].apply(lambda x: float(re.sub(r",", "", x)))

要仍然在熊猫中显示带有逗号的结果浮动,您可以按照here

的说明更改浮动的显示设置

IDK您希望如何输出这些信息,例如在to_excel函数中,您可以指定浮点格式,例如here或在输出之前重新格式化该列,类似于上面的内容。有关一些想法,请参见此answer