【发布时间】:2019-10-13 05:45:24
【问题描述】:
我正在尝试将包含某个子字符串的 Python 数据框列中的所有字符串替换为仅子字符串本身。最好是“inplace=True”类型的结果。
我尝试了各种正则表达式,不幸的是,由于我是新手,我尝试过的一切都没有产生预期的结果。我在 Python 3.7.3 上。
我认为我需要在数据框中进行替换的代码是
df.replace(to_replace = 标识包含子字符串的字符串中的子字符串的正则表达式,值 = 'substring',正则表达式 = True)。所以下面是我正在尝试做的一个例子
#original dataframe
import pandas as pd
df = pd.DataFrame({'brand':['brand1 & brand2','brand1/brand3','brand4 brand3','brand1 and brand 6']})
df
brand
0 brand1 & brand2
1 brand6
2 brand1/brand3
3 brand9
4 brand4 brand3
5 brand8
6 brand1 and brand6
#desired result
df
brand
0 brand1
1 brand6
2 brand1
3 brand9
4 brand4 brand3
5 brand8
6 brand1
到目前为止,我的正则表达式没有任何变化。请注意,品牌名称实际上并不包含 1-9,以避免任何可能的混淆。我正在处理的实际 df 有超过 10k 行,但在包含 brand1 的列“brands”字符串中,包含 10k 中的大约 2k,我需要仅用“brand1”替换所有包含 brand1 的字符串。
【问题讨论】:
-
你是否添加了inplace=True
-
您使用
pd.DataFrame({'brand':['brand1 & brand2','brand1/brand3','brand4 brand3','brand1 and brand 6']})输入的数据与您作为输入显示的数据不匹配。现在是否清楚您要替换的内容。 -
它现在应该匹配。就我要替换的内容而言,该示例显示任何包含品牌 1 的行,我想仅用品牌 1 替换这些字符串。所以第0行最初是字符串'brand1&brand2',我想用'brand1'替换它。其他行以此类推。
-
那么,第 4 行是怎么回事?为什么不直接变成brand4?
-
我需要保留该行。基本上,字符串中某处没有brand1 的所有行都需要单独放置。只有带有 brand1 的行才会使用正则表达式进行处理。
标签: python regex dataframe replace