如何从列表中为数据框的特定列名称附加后缀

时间:2016-10-26 12:35:10

标签: python r pandas multiple-columns suffix

我想根据df2中的名称为df1的某些列名追加后缀或前缀。 我的df1看起来像这样,

AE02    AE03    AE04    AE05    AE06    AE07    AE08    AE09    AE10    AE11    AE12
11.9619362364   18.5701402709   42.2010838789   28.0025053738   19.5589170223   18.1459582989   16.5292369479   32.4885640738   34.0342144643   31.6971000153   44.932255488
2.9904840591    3.9793157723    0   0   1.7780833657    1.7281865047    13.7743641233   4.3318085432    0   17.067669239    0
0   0   0   0   2.6671250485    0   4.5914547078    0   0   0   2.1396312137

和df2看起来像,

 V1
AE06
AE08    
AE09
AE12

我可以用新名称替换那些列名,如下所示,

colnames(df1)[which(colnames(df1) %in% df2$V1 )] <- "DMR"

但我正在寻找一个解决方案,我可以将其作为前缀添加到列名而不是替换它, 例如,我的列名应该是这样的,

AE02    AE03    AE04    AE05    DMR_AE06    AE07    DMR_AE08    DMR_AE09    AE10    AE11    DMR_AE12

任何建议和帮助都是很好的

2 个答案:

答案 0 :(得分:4)

Pandas 解决方案:

您可以numpy.where使用Index.isin {{3}}:

mask

答案 1 :(得分:1)

使用Python中的列表理解:

df.columns = ['DMR_{}'.format(x) if x in df2.V1.values else x for x in df.columns]