首页 > 解决方案 > 如何用特定字符替换python字符串中的字符串?

问题描述

例如,我Children在 python 的数据框中有一个名为的列,

几个名字[ tom (peter) , lily, fread, gregson (jaeson 123)] 等等。

我想问我应该写什么代码,可以删除每个名字的一部分,例如'('等等。所以从我给定的名字示例 tom(peter) 将成为我的专栏中的 tom 和 gregson (123 ) 将变为 gregson。由于有数千个名称带有括号部分,我想删除从括号“(”开始并以括号“)”结尾的字符串部分。这是一个包含许多列的数据框,但我想做此编辑在我名为 DF 的数据框中名为 CHILDREN 的特定列中进行。

标签: pythonpandas

解决方案


正如@Ruslan S.所建议的那样,您可以使用pandas.Series.str.replace或也可以使用re.sub(还有其他方法):

import pandas as pd
df = pd.DataFrame({"name":["tom (peter)" , "lily", "fread", "gregson (jaeson 123)"]})
# OPTION 1 with str.replace :
df["name"] = df["name"].str.replace(r"\([a-zA-Z0-9\s]+\)", "").str.strip()
# OPTION 2 :with re sub
import re
r = re.compile(r"\([a-zA-Z0-9\s]+\)")
df["name"] = df["name"].apply(lambda x: r.sub("", x).strip())

两种情况的结果:

      name
0      tom
1     lily
2    fread
3  gregson

请注意,我还使用 strip 在这里删除前导和尾随空格。有关要使用的正则表达式的更多信息,请参见re doc例如。


推荐阅读