在Pandas中从字符串中删除多个字符的简化方法?

时间:2016-12-13 17:43:12

标签: python-3.x pandas

我正在尝试清理Pandas数据帧中的地址数据。我想从地址中删除所有逗号和句点。我有一个有效的lambda函数,但它要求我一遍又一遍地使用.replace()

x.replace(',', '').replace('.', '')

我尝试简化代码并使用.translate({None: ",."}),代码运行时没有任何错误,但不删除逗号和句点。

是否有更简化的方法来实现这一目标?我还想删除像' ave',' blvd',' boulevard'等等。我希望能够不使用{ {1}}我需要更换的每件物品。

1 个答案:

答案 0 :(得分:0)

您可以像这样使用operator.methodcaller

from operator import methodcaller

replacements = [(',', ''), ('.', '')]
methods = [methodcaller('replace', r[0], r[1]) for r in replacements]

string = 'change, me. please'
for m in methods:
    string = m(string)

string
  

"请改变我"

这可以应用于数据帧,如下所示:

def replace_(string):
    for m in methods:
        string = m(string)
    return string

df = pd.DataFrame({'col1': 'silly.strings,,, a.,whole.. few.,dd'.split()})

print(df)

               col1
0  silly.strings,,,
1        a.,whole..
2           few.,dd


df.col1.apply(replace_)

0    sillystrings
1          awhole
2           fewdd
Name: col1, dtype: object