将字符串转换为浮点数 Pandas

10

简单问题:我有一个数据集,从csv文件导入,包含一个带有数值的字符串列。逗号后是小数位。

我想将其转换为浮点数。基本上,就是这样:

x = ['27,10083']
df = pd.DataFrame(x)
df.astype(float)

为什么这个不起作用,如何解决这个简单的问题?

先行谢过。

1个回答

15

使用replace函数将输出赋值给:

df = df.replace(',','.', regex=True).astype(float)

如果想要指定要转换的列:

cols = ['col1','col2']
df[cols] = df[cols].replace(',','.', regex=True).astype(float)

另一个解决方案是在read_csv中使用参数decimal=',',然后列就会正确地解析为浮点数:

df = pd.read_csv(file, decimal=',')

1
非常感谢,使用 csv 导入中的 decimal=',',太好了。 - SQL_M
我在read_csv中使用以下参数:skiprows = 9,sep = None,decimal = ',',engine = 'python',但是十进制不起作用。有什么想法为什么? - Newskooler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接