删除熊猫列中的一部分字符串

时间:2019-07-31 07:29:13

标签: python pandas

如果熊猫df看起来像这样:

Id    Name        Gene
1    ARR_R         C
1    AR2           C
1    A3412d_R      C
1    Asfsvv        C
1    A_RUUYR_R     C

我需要删除例如_R,但仅当它出现在例如5个最后一个字符中时才删除。

我尝试过这种方式:

df['Name']=(df.Name.replace({'_R':''}, regex=True))

但是在此示例中,代码将A_RUUYR_R更改为'AUUYR',并且应为A_RUUYR。可以命令替换功能从头开始吗?

3 个答案:

答案 0 :(得分:2)

IIUC,您可以使用切片和连接,例如:

df.Name.str[:-5] + df.Name.str[-5:].replace({'_R':''}, regex=True)

[出]

0        ARR
1        AR2
2     A3412d
3     Asfsvv
4    A_RUUYR
Name: Name, dtype: object

答案 1 :(得分:1)

IIUC

df.Name.apply(lambda x: re.sub('(?<=\w{5})_R','',x) if re.findall('\w{5}_R',x) else x)

输出

0      ARR_R
1        AR2
2     A3412d
3     Asfsvv
4    A_RUUYR
Name: Name, dtype: object

答案 2 :(得分:1)

如果您要替换_R 且仅当出现在前5个字符之后时,请使用:

df['Name'].str.replace('(?<=.{5})(_R)','', regex=True)

输出:

0      ARR_R
1        AR2
2     A3412d
3     Asfsvv
4    A_RUUYR
Name: Name, dtype: object