Python 从字典向列添加级别

Python 从字典向列添加级别,python,pandas,multi-index,Python,Pandas,Multi Index,我有一个数据框,我想在它上面添加一级列。 可以使用my_dict找到正确的新级别列 df = pd.DataFrame(index=list('abcde'), data={'A': range(5), 'B': range(5)}) my_dict = {"B": "BB","A": "AA","C": "CC"} 这就是我所期望的: Out[92]: A B

我有一个数据框,我想在它上面添加一级列。 可以使用my_dict找到正确的新级别列

df = pd.DataFrame(index=list('abcde'), data={'A': range(5), 'B': range(5)})
my_dict = {"B": "BB","A": "AA","C": "CC"}
这就是我所期望的:

Out[92]: 
   A  B
   AA BB
a  0  0
b  1  1
c  2  2
d  3  3
e  4  4

谢谢

您可以执行
df.columns.map
然后转换为多索引

df.columns = pd.MultiIndex.from_arrays((df.columns,df.columns.map(my_dict)))

与按嵌套列表分配回列名一起使用-如果不匹配,则获取
NaN

df.columns = [df.columns, df.columns.map(my_dict)]
print (df)
   A  B
  AA BB
a  0  0
b  1  1
c  2  2
d  3  3
e  4  4
使用
重命名的解决方案
-如果不匹配,则获取原始值:

df.columns = [df.columns, df.rename(columns=my_dict).columns]

测试是否存在不匹配:

df = pd.DataFrame(index=list('abcde'), data={'A': range(5), 'B': range(5), 'D': range(5)})
my_dict = {"B": "BB","A": "AA","C": "CC"}


df.columns = [df.columns, df.columns.map(my_dict)]
print (df)
   A  B   D
  AA BB NaN
a  0  0   0
b  1  1   1
c  2  2   2
d  3  3   3
e  4  4   4

df.columns = [df.columns, df.columns]

df = df.rename(columns=my_dict, level=1)
df = pd.DataFrame(index=list('abcde'), data={'A': range(5), 'B': range(5), 'D': range(5)})
my_dict = {"B": "BB","A": "AA","C": "CC"}


df.columns = [df.columns, df.columns.map(my_dict)]
print (df)
   A  B   D
  AA BB NaN
a  0  0   0
b  1  1   1
c  2  2   2
d  3  3   3
e  4  4   4
df.columns = [df.columns, df.columns]
df = df.rename(columns=my_dict, level=1)

#df.columns = [df.columns, df.rename(columns=my_dict).columns]
print (df)
   A  B  D
  AA BB  D
a  0  0  0
b  1  1  1
c  2  2  2
d  3  3  3
e  4  4  4