一次替换 Pandas Series 的多个子字符串

Joa*_*dao 4 python string replace series pandas

我有一个 Pandas 系列高尔夫球分数,我想同时进行多个子字符串替换:

  1. 将“+”替换为“”(即什么都没有)
  2. 将“E”替换为“0”

在字典中,我想这看起来像:

reps = {'+' : '', 'E' : '0'}
Run Code Online (Sandbox Code Playgroud)

我尝试过 pandas.Series.str.replace,但这似乎只接受一个参数。到目前为止我所做的是:

series = series.str.replace('+', '')
series = series.str.replace('E', '0')
Run Code Online (Sandbox Code Playgroud)

这可行,但显然形式很差。如何在一行中完成此操作并进行任意数量的编辑?

pau*_*ult 5

如果您使用的是python3(这在python2中不起作用),您可以使用pandas.Series.str.translate如下:

import pandas as pd
reps = {'+' : '', 'E' : '0'}
series = pd.Series(['+1', 'E', '+5', '-1'])

print(series)
#0    +1
#1     E
#2    +5
#3    -1
#dtype: object

print(series.str.translate(str.maketrans(reps)))
#0     1
#1     0
#2     5
#3    -1
#dtype: object
Run Code Online (Sandbox Code Playgroud)

验证它是否符合您的预期的更好方法:

print(series.str.translate(str.maketrans(reps)).values)
#array(['1', '0', '5', '-1'], dtype=object)
Run Code Online (Sandbox Code Playgroud)