替换python df问题中的字符串
我试图从pandas数据帧中分离几个字符串:替换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 但产出是错误
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)