python - 从数据框中的字符串中删除字符
问题描述
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 后跟空格,后跟括号,然后是两个字母,后跟括号。据我了解,应该是在正则表达式中:
( \(..\)
我尝试使用 str.replace 但它仅适用于完全匹配并且它会替换整个值。我也试过这个:
df.loc[df['favorite_color'].str.contains(‘VS’), 'favorite_color'] = ‘random’
它也替换了整个值。
我看到我只能重写值,但我也看到使用这个:
df[0].str.slice(0, -5)
我可以删除包含我的搜索的字符串的最后 5 个字符。
在我看来,我应该列出我想要删除的 26 个匹配项,并通过列解析以删除这些匹配项,同时保留之前的文本。我搜索了与我的问题类似的帖子,但找不到解决方案。你有什么方向的想法吗?
解决方案
您可以使用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
推荐阅读
- android - Android Studio 启用离线模式不起作用
- autodesk - 设计自动化 API 无法打开 zip 文件
- python - 排序-TypeError:'int'和'str'的实例之间不支持'<',Python
- excel - 如何从带有标题的记录集中复制?
- arrays - PowerShell 3.0 -iin 运算符支持通配符吗?如何以类似的方式使用 -ilike?
- image-processing - CNN与gabor滤波器的关系
- javascript - 可以在 react/javacritpt 中使用谷歌语音到文本 api
- python - 如何更新 textblob 中某些单词的情感分数?
- javascript - 什么是“el”,这些代码之间有什么关系,粗箭头是如何工作的?
- c# - C# boolean Value 总是返回 false 但在数据库中为 true