如何在 pandas DataFrame 中合并多级列?
How to merge multi-levels colums inside a pandas DataFrame?
设 DF 为多索引 DataFrame,构造如下:
df_A = {}
df_A['origin'] = pd.DataFrame({'a': [11,12,13], 'b': [True, True, False]})
df_A = pd.concat(df_A, axis=1)
df_B = {}
df_B['destination'] = pd.DataFrame({'c': [11,12,13], 'd': [True, True, False]})
df_B = pd.concat(df_B, axis=1)
df_B
df_C = {}
df_C['origin'] = pd.DataFrame({'e': [11,12,13], 'f': [True, True, False]})
df_C = pd.concat(df_C, axis=1)
DF = df_A.join(df_B.join(df_C))
我们看到生成的 DataFrame 有一个重复的列级别(即“origin”):
问题:如何将“origin”列合并为一个列?期望的结果是:
它们已经合并。由于列顺序,它以这种方式显示。您可以对索引进行排序,使 origin
列彼此相邻:
DF.sort_index(axis=1, level=0, ascending=False)
origin destination
f e b a d c
0 True 11 True 11 True 11
1 True 12 True 12 True 12
2 False 13 False 13 False 13
设 DF 为多索引 DataFrame,构造如下:
df_A = {}
df_A['origin'] = pd.DataFrame({'a': [11,12,13], 'b': [True, True, False]})
df_A = pd.concat(df_A, axis=1)
df_B = {}
df_B['destination'] = pd.DataFrame({'c': [11,12,13], 'd': [True, True, False]})
df_B = pd.concat(df_B, axis=1)
df_B
df_C = {}
df_C['origin'] = pd.DataFrame({'e': [11,12,13], 'f': [True, True, False]})
df_C = pd.concat(df_C, axis=1)
DF = df_A.join(df_B.join(df_C))
我们看到生成的 DataFrame 有一个重复的列级别(即“origin”):
问题:如何将“origin”列合并为一个列?期望的结果是:
它们已经合并。由于列顺序,它以这种方式显示。您可以对索引进行排序,使 origin
列彼此相邻:
DF.sort_index(axis=1, level=0, ascending=False)
origin destination
f e b a d c
0 True 11 True 11 True 11
1 True 12 True 12 True 12
2 False 13 False 13 False 13