替换python df问题中的字符串

时间:2019-07-05 15:03:59

标签: 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

但是输出错误:

错误的输出:

     y
0   |Infiltration
1   A||Infiltration
2   Infiltration|

正确/预期输出

     y
0   Infiltration
1   A|Infiltration
2   Infiltration

可以使用任何字符串代替A和In渗透,但是模式将相同。

2 个答案:

答案 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