替换 Pandas 中的逗号和点

Pra*_*ani 3 python decimal comma euro pandas

我有一个包含 3.4500,00 欧元等数据的列。现在我想将此与具有浮点数(如 4000.00)的另一列进行比较。我如何取这个字符串,删除欧元并用十进制替换逗号,然后转换为浮点数进行比较。

Erf*_*fan 7

您可以使用正则表达式使您的条件通用,适用于所有情况:

# 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) 将其从对象(字符串)类型转换为浮点数


Xp.*_*p.L 0

这是我的解决方案:

模拟数据:

         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)