[英]How to append a suffix for specific column names of a dataframe from a list
我想根据 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
任何建议和帮助都非常感谢
熊猫解决方案:
您可以通过Index.isin
将numpy.where
与mask
Index.isin
:
print (df.columns.isin(df2.V1))
[False False False False True False True True False False True]
df.columns = np.where(df.columns.isin(df2.V1), 'DMR_' + df.columns, df.columns)
print (df)
AE02 AE03 AE04 AE05 DMR_AE06 AE07 \
0 11.961936 18.570140 42.201084 28.002505 19.558917 18.145958
1 2.990484 3.979316 0.000000 0.000000 1.778083 1.728187
2 0.000000 0.000000 0.000000 0.000000 2.667125 0.000000
DMR_AE08 DMR_AE09 AE10 AE11 DMR_AE12
0 16.529237 32.488564 34.034214 31.697100 44.932255
1 13.774364 4.331809 0.000000 17.067669 0.000000
2 4.591455 0.000000 0.000000 0.000000 2.139631
使用 Python 中的列表理解:
df.columns = ['DMR_{}'.format(x) if x in df2.V1.values else x for x in df.columns]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.