Python 重新组合多索引列
我遇到了一个问题,即向多索引列数据帧添加新列会导致新列附加到数据帧的末尾。例如:Python 重新组合多索引列,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,我遇到了一个问题,即向多索引列数据帧添加新列会导致新列附加到数据帧的末尾。例如: Group 1 | Group 2 | Group 1 | Group 2 | ------------------------------------------------------ Sub 1 | Sub 2 | Sub 1 | Sub 2 | New Sub | New Sub | 而我想要的是: Group 1 | Group 2
Group 1 | Group 2 | Group 1 | Group 2 |
------------------------------------------------------
Sub 1 | Sub 2 | Sub 1 | Sub 2 | New Sub | New Sub |
而我想要的是:
Group 1 | Group 2 |
------------------------------------------------------
Sub 1 | Sub 2 | New Sub | Sub 1 | Sub 2 | New Sub |
有没有办法对我的多重索引进行重新分组/排序?注意-我不想按名称对子组重新排序,因为新的子组需要在末尾进行排序,并且按字母顺序排序可能不正确。您只需在设置后调用:
df1=pd.DataFrame(columns=pd.MultiIndex.from_product((('a','b'),
(1,2))),data=np.arange(4).reshape(1,-1))
df2=pd.DataFrame(columns=pd.MultiIndex.from_tuples((('a','3'),('b',5))),data=[[9,9]])
df=df1.join(df2)
# a b a b
# 1 2 1 2 3 5
# 0 0 1 2 3 9 9
df.sort_index(axis=1,inplace=True)
# a b
# 1 2 3 1 2 5
# 0 0 1 9 2 3 9
我认为您需要或通过自定义列表:
df1=pd.DataFrame(columns=pd.MultiIndex.from_product((('C','R', 'A'),(1,2))),
data=np.arange(6).reshape(1,-1))
df2=pd.DataFrame(columns=pd.MultiIndex.from_tuples((('C','3'),('R',5),('A',4))),
data=[[9,9,4]])
df=df1.join(df2)
print (df)
C R A C R A
1 2 1 2 1 2 3 5 4
0 0 1 2 3 4 5 9 9 4
df1 = df.reindex(columns = ['C','R','A'], level=0)
print (df1)
C R A
1 2 3 1 2 5 1 2 4
0 0 1 9 2 3 9 4 5 4
df1 = df.reindex_axis(['C','R','A'], level=0, axis=1)
print (df1)
C R A
1 2 3 1 2 5 1 2 4
0 0 1 9 2 3 9 4 5 4
你是如何设置的?jezrael,方法1和方法2有什么区别?我认为没有什么(也许我错了),其他解决方案。但就个人而言,我更喜欢reindex_axis,但我无法解释原因;)杰出的最后我使用了df1=df.reindex(columns=df.columns.levels[0],level=0)
,因为根据导入的文件,分组不同。这似乎保持了秩序,同时又正确地重组了一切。谢谢