我正在尝试清理Pandas数据帧中的地址数据。我想从地址中删除所有逗号和句点。我有一个有效的lambda函数,但它要求我一遍又一遍地使用.replace()
:
x.replace(',', '').replace('.', '')
等
我尝试简化代码并使用.translate({None: ",."})
,代码运行时没有任何错误,但不删除逗号和句点。
是否有更简化的方法来实现这一目标?我还想删除像' ave',' blvd',' boulevard'等等。我希望能够不使用{ {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