Python 从字典向列添加级别
我有一个数据框,我想在它上面添加一级列。 可以使用my_dict找到正确的新级别列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
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