Я хотел бы заменить некоторые имена столбцов 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?

Вы можете преобразовать 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