我正在尝试从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和In渗透,但是模式将相同。
答案 0 :(得分:3)
您需要在|
中逃脱replace
:
x['y'] = x['y'].replace({'\|Hernia': ''},regex=True)
x['y'] = x['y'].replace({'Hernia\|': ''},regex=True)
从@ user3483203和@piRSquared的评论中,您可以将|
作为or
来加入它们:
x['y'].replace({'\|Hernia|Hernia\|': '',
'':''},regex=True, inplace=True)
答案 1 :(得分:3)
这可能可以通过split / join更好地处理
x['y'].apply(lambda row: '|'.join(x for x in row.split('|') if 'Hernia'!= x))
输出:
0 Infiltration
1 A|Infiltration
2 Infiltration