python - 如何用特定字符替换python字符串中的字符串?
问题描述
例如,我Children
在 python 的数据框中有一个名为的列,
几个名字[ tom (peter) , lily, fread, gregson (jaeson 123)]
等等。
我想问我应该写什么代码,可以删除每个名字的一部分,例如'('等等。所以从我给定的名字示例 tom(peter) 将成为我的专栏中的 tom 和 gregson (123 ) 将变为 gregson。由于有数千个名称带有括号部分,我想删除从括号“(”开始并以括号“)”结尾的字符串部分。这是一个包含许多列的数据框,但我想做此编辑在我名为 DF 的数据框中名为 CHILDREN 的特定列中进行。
解决方案
正如@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例如。
推荐阅读
- angular - 如何在 ngx 数据表中显示嵌套数组对象?
- typescript - 将静态属性的类型设置为实例类型的数组
- python - 如果满足条件,如何为列分配设定值?
- selenium - 有没有办法将 GlobalProtect VPN 与 Selenium 连接起来?(或同等学历)
- git - 未找到 Git 存储库错误存储库
- python - 如何在 Colaboratory 上使用 Selenium 在网站上下载 .xlxs 文件(不是 .do)?
- java - Java 中 random.nextInt() 的时间复杂度是多少?
- redis - Redis:哈希的非十进制 ID(如用户:Jonn Dow)并获取哈希数组 4 所有用户
- python - Python Selenium 选择元素几个问题
- angular7 - Angular 7 日期范围选择器问题