如何在Pandas中使用rstrip删除列中字符串的一部分?

时间:2018-08-23 16:10:16

标签: python string pandas

rstrip之前的代码

=if(sumifs('POs iTunes'!$D:$D,'POs iTunes'!$C:$C,concatenate("*",B$8,"*"),'POs iTunes'!$E:$E,text($A11,"dd/mm/yy"))=0,iferror({INDEX(B12:B,MATCH(true,B12:B>0,0))},0))

Initial DF

带有rstrip的代码(从第一列值的末尾删除“ _V2”):

column_names = lh_Area_Base_V2.columns.tolist()
for i, val in enumerate(column_names[1:]):
    column_names[i+1] += '_Base_V2'
column_names[0] = 'Subj_ID'
# Replace the column names with a new name
lh_Area_Base_V2.columns = column_names
lh_Area_Base_V2.head()

Resulting DF After rstrip

错误:为什么ID索引#1的末尾丢弃了一个值2,而rstrip函数没有要求该值(该函数仅要求删除“ _V2”)?

我很想听听任何修复建议。

1 个答案:

答案 0 :(得分:3)

这是rstrip的预期行为:

  

chars参数是一个字符串,指定要删除的字符集

这不仅是剥离 string _V2,还将剥离任何包含的字符,包括第二行末尾的2

相反,您可以使用正则表达式替换结尾的_V2

df.assign(Subj_ID=df.Subj_ID.str.replace(r'_V2$', ''))

    Subj_ID  lh_bankssts_area_base_V2
0  SILVA001                       861
1  SILVA002                      1051
2  SILVA004                      1127
3  SILVA005                      1346
4  SILVA007                      1209