Pandas:astype错误字符串转浮点数(无法将字符串转换为浮点数:'7,50')

4

我是一名Pandas的使用者,希望将数据框中的某个字段从字符串转换成浮点数。

这个字段的原始数据如下:

In:

print(merged['platnosc_total'].head(100))

Out:

0     0,00
1     4,50
2     0,00
3     0,00
4     0,00
5     4,50
6     6,10
7     7,99
8     4,00
9     7,69
10    7,50

请注意最后一行中的7、50,它们似乎是导致错误的原因:
In: 

merged['platnosc_total'].astype(float)

Out:

ValueError: could not convert string to float: '7,50'

这是否意味着其余部分已被转换,只有行7,50是原因?

我该如何将此字段/列实际转换为浮点数?


可能是将带逗号的Pandas字符串列更改为浮点数的重复问题。 - FLab
2个回答

5

首先需要使用replace函数:

print (merged['platnosc_total'].replace(',','.', regex=True).astype(float))
0    0.00
1    4.50
2    0.00
3    0.00
4    0.00
5    4.50
6    6.10
7    7.99
8    4.00
Name: platnosc_total, dtype: float64

1
谢谢。我被我的 Excel 带偏了,它使用“,”作为小数点而不是“。”-非英语版本。 - FilipB
如果使用read_excel,那么就没有自动转换吗?我只是好奇。 - jezrael
1
我认为是这样的,但我从一个存储有“,”值的csv文件中导入。我所说的偏见是,我认为逗号对于浮点数是合适的,我有一些带有点“.”的值,甚至将其替换回逗号,因为我的Excel使用逗号表示浮点数,所以我应该在那里使用“,”,因此当文本值可以转换时出现错误,我感到惊讶。 - FilipB

2
如果你的列中含有nan或空行,使用astype(float)会失败。
建议使用
merged.replace('', np.nan).dropna(subset=['platnosc_total'], inplace=True)
merged['platnosc_total'].astype(float)

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