如果包含两个子字符串的列中的值替换为另一列

时间:2019-10-15 15:57:48

标签: pandas

我有这样的df:

            xx    yy
AAsdsd_ss   3     2
AAassa_ss   3     1
CC          4     7 
DD          7     6

如果索引str.contain AA和_ss将yy列的值替换为xx以生成以下输出,我想这样做:

            xx    
AAsdsd_ss   2     
AAassa_ss   1         
CC          4      
DD          7    

我该如何实现?

1 个答案:

答案 0 :(得分:1)

IIUC:

df.loc[df.index.to_series().str.match('^AA.*_ss$'), 'xx'] = df['yy'] 

输出:

           xx  yy
AAsdsd_ss   2   2
AAassa_ss   1   1
CC          4   7
DD          7   6

注意:代码开头AA和结尾_ss匹配。如果您只是想在任何地方以任意顺序使用它们,

s = df.index.to_series()
df.loc[s.str.contains('AA') & s.str.contains('_ss'), 'xx'] = df['yy']