如果熊猫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
。可以命令替换功能从头开始吗?
答案 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