Используйте строку в DF в качестве имени нового столбца в другом DF

Я хотел бы заменить некоторые имена столбцов DF именами в строках в другом DF

import pandas as pd
df1=pd.DataFrame({'T2': [2,3],
          'T1': [4,5],
          'HO': [2,7]
          })

df2=pd.DataFrame({'T1' : ['cat'],
            'T2' :['dog']  
           })

Как я могу заменить в df1 «T1» и «T2» на «собаку и кошку», которые есть в df2?

1
0
44
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете преобразовать df2 в dict, который сопоставляет имя столбца со значением строки, используя df.to_dict, затем используйте dict, чтобы переименовать столбцы, используя df.rename. Вот как:

In [4]: df1 
Out[4]: 
   HO  T1  T2
0   2   4   2
1   7   5   3

In [5]: df2 
Out[5]: 
    T1   T2
0  cat  dog

In [6]: df2.to_dict(orient = "records")
Out[6]: [{'T1': 'cat', 'T2': 'dog'}]

In [7]: df1.rename(columns=df2.to_dict(orient = "records")[0])
Out[7]: 
   HO  cat  dog
0   2    4    2
1   7    5    3
Ответ принят как подходящий

Вы также можете использовать более простой способ

print df2.iloc[0]

T1    cat
T2    dog
Name: 0, dtype: object

Solution:
df1 = df1.rename(columns=df2.iloc[0])

print df1
   HO  cat  dog
 0   2    4    2
 1   7    5    3

Вы можете использовать сопоставление:

 def mapping(x):
    return df2[x] if x in df2 else x

df1.columns=list(map(mapping, list(df1.columns)))

print(df1)

   dog  cat  HO
0    2    4   2
1    3    5   7

Другие вопросы по теме