添加层次索引下的索引列 PANDAS/python

Add index column which is under a hierarchical index PANDAS/python

我想将 col1 设置为索引。数据框是连接的结果,我使用键创建层次索引

import pandas as pd

d = {'col1': [0, 1, 2, 3], 'col2': pd.Series([2, 3], index=[2, 3])}
df = pd.DataFrame(data=d, index=[0, 1, 2, 3])

d2 = {'col1': [0, 1, 4, 3], 'col2': pd.Series([4, 3], index=[2, 3])}
df2 = pd.DataFrame(data=d2, index=[0, 1, 2, 3])

result = pd.concat([df,df2], axis=1, keys=['PartieA', 'PARTIEB'])
print(result)
result.set_index(['col1'], append=True)
print(result)

我遇到了这个错误:

KeyError: "None of ['col1'] are in the columns"

我有这个:

PartieA      PARTIEB     
     col1 col2    col1 col2
0       0  NaN       0  NaN
1       1  NaN       1  NaN
2       2  2.0       4  4.0
3       3  3.0       3  3.0

我要:

          PartieA      PARTIEB     
          col2    col1 col2
    col1  NaN       0  NaN
       0  NaN       1  NaN
       1  2.0       4  4.0
       2  3.0       3  3.0

Select MultiIndex 元组,然后按 DataFrame.rename_axis:

重命名索引名称
result = result.set_index([('PartieA','col1')]).rename_axis('col1')
print(result)

     PartieA PARTIEB     
        col2    col1 col2
col1                     
0        NaN       0  NaN
1        NaN       1  NaN
2        2.0       4  4.0
3        3.0       3  3.0

因为索引与原始索引相同,所以可以按元组删除列:

result = result.drop([('PartieA','col1')], axis=1).rename_axis('col1')
print(result)
     PartieA PARTIEB     
        col2    col1 col2
col1                     
0        NaN       0  NaN
1        NaN       1  NaN
2        2.0       4  4.0
3        3.0       3  3.0