我想用另一个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']
})
如何用df2中的“ dog”和“ cat”替换df1中的“ T1”和“ T2”?
答案 0 :(得分:0)
您可以将df2
转换为dict
,使用df.to_dict将列名映射到行值,然后使用dict
使用{{3 }}。方法如下:
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
答案 1 :(得分:0)
您还可以使用更简单的方法
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
答案 2 :(得分:0)
您可以使用映射:
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