仅当名称在字典中时才基于字典重命名 pandas 列

Rename pandas column based on a dictionary only if the name is in the dictionary

我想重命名我的数据框中的列,使用字典中的名称,但在我的例子中,我的字典不代表所有列名,所以我只想更改我的那些在我的字典里。 例如

       key1 key2 key3 key4
index
1      val1 val2 val3 val4
2      val5 val6 val7 val8
3      ...
4
5

我的字典是

{'key1': 'name1',
 'key2': 'name2',
 'key4': 'name4'
}

我想得到的是

       name1 name2 key3 name4
index
1      val1 val2 val3 val4
2      val5 val6 val7 val8
3      ...
4
5

所以我尝试做与 相同的事情,但是映射不起作用,因为不在我的字典中的键在列名称中以 Nans 结尾。 有谁知道如何做到这一点? T-T

您可以在列表理解中使用 dict.get(请注意,我在此处将字典命名为 d):

df.columns = [d.get(k,k) for k in df.columns]

输出:

      name1 name2  key3 name4
index                        
1      val1  val2  val3  val4
2      val5  val6  val7  val8