Как указал @Allolz, чтобы избавиться от разделителя ,
тысяч, используйте аргумент thousands
в pd.read_csv()
:
df= pd.read_csv("table.csv", thousands=',', encoding = 'ISO-8859-1')
Если я правильно понимаю, проще всегоДля этого нужно использовать pd.to_numeric
, который может преобразовать все нечисловые числа в NaN
, который затем можно заменить на 0:
df['value'] = pd.to_numeric(df.value,errors='coerce').fillna(0)
Пример:
df = pd.DataFrame({'value':['-','-0.5','0.5','-']})
>>> df
value
0 -
1 -0.5
2 0.5
3 -
df['value'] = pd.to_numeric(df.value,errors='coerce').fillna(0)
>>> df
value
0 0.0
1 -0.5
2 0.5
3 0.0
Но есливы могли бы также использовать replace
вместо str.replace
, чтобы заменить полные строки вместо подстрок:
df['value'] = df['value'].replace('-',0).astype(float)
Пример:
>>> df
value
0 -
1 -0.5
2 0.5
3 -
df['value'] = df['value'].replace('-',0).astype(float)
>>> df
value
0 0.0
1 -0.5
2 0.5
3 0.0