将DF上的行用作另一个DF中的新列名称

时间:2019-04-13 11:46:23

标签: pandas

我想用另一个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”?

3 个答案:

答案 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