首页 > 解决方案 > 如何将带有欧洲数字(逗号作为小数分隔符)的多列转换为浮点数?

问题描述

我有多个包含欧洲格式数字的列,例如

1.630,78

它们在前面或末尾有不同的字符(€、%),所以我不能使用 pandas 转换器功能。

pd.read_csv("file.csv", decimal=',', separator={"col1": float, "col": float}

不起作用,因为我必须先删除标志,这只有在阅读整个文件后才能做到。

在 pandas 数据框中搜索和替换点和逗号

没用,我得到一个

ValueError: could not convert string to float: ''

但每一行都有一个条目

如何将特定列中的这些字符串更改为浮点数?

标签: pandasfloating-pointnumbersdigit-separator

解决方案


将列读取为字符串,然后使用translate

tt = str.maketrans(',', '.', '.€%')
df.col1 = df.col1.str.translate(tt).astype(float)

PS:您可能需要根据需要采用带有要删除的字符的第三个参数。


推荐阅读