猿问

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

python初学者在这里。我想在某些条件下更改数据框的列中的某些字符。


数据框如下所示:


import pandas as pd

import numpy as np

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

我的目标是在列的姓氏中替换后跟括号和两个字母的空格。


蓝色,而不是蓝色(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个事件,并分析该列以删除这些事件,同时保留之前的文本。我搜索了与我的问题类似的帖子,但找不到解决方案。您对方向有任何想法吗?


慕哥9229398
浏览 187回答 1
1回答

梵蒂冈之花

您可以使用str.replace模式"(\(.*?\))"前任:import pandas as pdraw_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  newCol0   20      blue (VS)     88    Willard Morris    blue1   19            red     92       Al Jennings     red2   22    yellow (AG)     95      Omar Mullins  yellow3   21          green     70  Spencer McDaniel   green
随时随地看视频慕课网APP

相关分类

Python
我要回答