为了账号安全,请及时绑定邮箱和手机立即绑定

从数据框中的字符串中删除字符

从数据框中的字符串中删除字符

慕哥9229398 2021-04-07 13:15:44
python初学者在这里。我想在某些条件下更改数据框的列中的某些字符。数据框如下所示:import pandas as pdimport numpy as npraw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],                      'age': [20, 19, 22, 21],                      'favorite_color': ['blue (VS)', 'red', 'yellow (AG)', "green"],                      'grade': [88, 92, 95, 70]}df = pd.DataFrame(raw_data, index = ['0', '1', '2', '3'])df我的目标是在列的姓氏中替换后跟括号和两个字母的空格。蓝色,而不是蓝色(VS)。我必须删除26个字母的变体,但是只有一种格式:last_name,后跟空格,后跟括号,然后是两个字母,后跟括号。据我了解,应该是在regexp中:( \(..\)我尝试使用str.replace,但它仅适用于完全匹配,并且替换了整个值。我也尝试过这个:df.loc[df['favorite_color'].str.contains(‘VS’), 'favorite_color'] = ‘random’它也取代了整个价值。我看到我只能重写该值,但是我也看到了使用以下代码:df[0].str.slice(0, -5)我可以删除包含搜索内容的字符串的最后5个字符。在我的脑海中,我应该列出要删除的26个事件,并分析该列以删除这些事件,同时保留之前的文本。我搜索了与我的问题类似的帖子,但找不到解决方案。您对方向有任何想法吗?
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以使用str.replace模式"(\(.*?\))"


前任:


import pandas as pd


raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],

                      'age': [20, 19, 22, 21],

                      'favorite_color': ['blue (VS)', 'red', 'yellow (AG)', "green"],

                      'grade': [88, 92, 95, 70]}

df = pd.DataFrame(raw_data, index = ['0', '1', '2', '3'])

df["newCol"] = df["favorite_color"].str.replace("(\(.*?\))", "").str.strip()

print( df )

输出:


   age favorite_color  grade              name  newCol

0   20      blue (VS)     88    Willard Morris    blue

1   19            red     92       Al Jennings     red

2   22    yellow (AG)     95      Omar Mullins  yellow

3   21          green     70  Spencer McDaniel   green


查看完整回答
反对 回复 2021-04-27
  • 1 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信