首页 > 解决方案 > 如果使用熊猫与另一列的字符串匹配,如何删除列的子字符串?

问题描述

我的数据框如下所示:

          FULL_NAME   NAME
0        FIRST LAST  FIRST
1               NaN    NaN
2        FIRST LAST  NAME2
3       FIRST NAME3  NAME3
4  FIRST NAME4 LAST  NAME4

如果与 NAME 的字符串匹配,我正在尝试删除 FULL_NAME 的子字符串。我尝试了这样的事情,但无法用任何内容替换子字符串:

df.FULL_NAME.replace({str(df['NAME']):''}, regex=True)

我想要的输出:

          FULL_NAME   NAME
0             LAST  FIRST
1               NaN    NaN
2        FIRST LAST  NAME2
3             FIRST  NAME3
4        FIRST LAST  NAME4

标签: pythonregexpandas

解决方案


我认为这应该适合你:

df['FULL_NAME'] =df.apply(lambda x: x['FULL_NAME'].replace(x['NAME'],''), axis=1)

此解决方案将保留一些未使用的空间,您可以添加str.strip()以使它们消失,如下所示:

df['FULL_NAME'] =df.apply(lambda x: x['FULL_NAME'].replace(x['NAME'],''), axis=1).str.strip()

推荐阅读