替换python df问题中的字符串

替换python df问题中的字符串,python,pandas,Python,Pandas,我试图从pandas数据帧中分离几个字符串: x = pd.DataFrame() x['y'] = ["Hernia|Infiltration","A|Hernia|Infiltration","Infiltration|Hernia"] x 我正在执行以下代码: x['y'] = x['y'].replace({'|Hernia': ''},regex=True) x['y'] = x['y'].str.replace('Hernia|', '',regex=True) x 但产出是错误

我试图从pandas数据帧中分离几个字符串:

x = pd.DataFrame()
x['y'] = ["Hernia|Infiltration","A|Hernia|Infiltration","Infiltration|Hernia"]
x
我正在执行以下代码:

x['y'] = x['y'].replace({'|Hernia': ''},regex=True)
x['y'] = x['y'].str.replace('Hernia|', '',regex=True)
x
但产出是错误的:

错误输出:

     y
0   |Infiltration
1   A||Infiltration
2   Infiltration|
正确/预期输出

     y
0   Infiltration
1   A|Infiltration
2   Infiltration

可以用任何字符串代替A和A,但模式是相同的。

您需要在
替换中转义
|

x['y'] = x['y'].replace({'\|Hernia': ''},regex=True)
x['y'] = x['y'].replace({'Hernia\|': ''},regex=True)
从@user3483203和@piRSquared的评论中,您可以通过充当
加入它们:

x['y'].replace({'\|Hernia|Hernia\|': '',
                '':''},regex=True, inplace=True)

您需要在
替换
中转义
|

x['y'] = x['y'].replace({'\|Hernia': ''},regex=True)
x['y'] = x['y'].replace({'Hernia\|': ''},regex=True)
从@user3483203和@piRSquared的评论中,您可以通过充当
加入它们:

x['y'].replace({'\|Hernia|Hernia\|': '',
                '':''},regex=True, inplace=True)

这可能可以通过拆分/联接更优雅地处理

x['y'].apply(lambda row: '|'.join(x for x in row.split('|') if 'Hernia'!= x))
输出:

0      Infiltration
1    A|Infiltration
2      Infiltration

这可能可以通过拆分/联接更优雅地处理

x['y'].apply(lambda row: '|'.join(x for x in row.split('|') if 'Hernia'!= x))
输出:

0      Infiltration
1    A|Infiltration
2      Infiltration

当您试图替换文字字符串而不是正则表达式时,是否有使用
regex=True
的原因?当您试图替换文字字符串而不是正则表达式时,是否有使用
regex=True
的原因?如果“疝气”!=x
否则,您也将取出
突出的椎间盘
。您可以使用理解而不是
应用
<代码>['|'。在x.y中为s加入(过滤器('疝气')。\uuu ne_uuuuuuu,s.split('|'))]
如果“疝气”!=x
否则,您也将取出
突出的椎间盘
。您可以使用理解而不是
应用
<因为
.replace()
需要一个字典,所以你可以把两个键放在同一个字典里。但是你可以用
把它们分开
x['y'].replace({'\\\\\\\\\\\\\\\\\\\\':'',regex=True)
因为
.replace()
需要一本字典,你可以把两个键放在同一个目录中。但是你可以用
'.
把它们分开<代码>x['y']。替换({'\\\\\\\\\\\\\\\\\\\\\\\\':'},regex=True)