您可以使用正则表达式使您的条件通用,适用于所有情况:
# Make example dataframe for showing answer
df = pd.DataFrame({'Value':['3.4500,00 EUR', '88.782,21 DOLLAR']})
Value
0 3.4500,00 EUR
1 88.782,21 DOLLAR
Run Code Online (Sandbox Code Playgroud)
str.replace与正则表达式一起使用:
df['Value'].str.replace('[A-Za-z]', '').str.replace(',', '.').astype(float)
0 34500.00
1 88782.21
Name: Value, dtype: float64
Run Code Online (Sandbox Code Playgroud)
解释:
str.replace('[A-Za-z\.]', '') 删除所有字母字符和点。str.replace(',', '.') 用逗号代替点astype(float) 将其从对象(字符串)类型转换为浮点数这是我的解决方案:
模拟数据:
amount amount2
0 3.4500,00EUR 4000
1 3.600,00EUR 500
Run Code Online (Sandbox Code Playgroud)
使用 apply() 然后将数据类型转换为 float
data['amount'] = data['amount'].apply(lambda x: x.replace('EUR', '')).apply(lambda x: x.replace('.', '')).apply(lambda x: x.replace(',', '.')).astype('float')
Run Code Online (Sandbox Code Playgroud)
结果:
amount amount2
0 34500.0 4000
1 3600.0 500
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16297 次 |
| 最近记录: |