python - 重组 pandas 多索引列

标签 python pandas dataframe multi-index

我遇到了一个问题,即向多索引列 DataFrame 添加新列会导致新列附加到 DataFrame 的末尾。例如:

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 |

有没有办法重新分组/排序我的多索引来做到这一点?注意-我不想按名称重新排序子组,因为新子组需要放在最后,并且按字母顺序排列可能无法正确排序。

最佳答案

我想你需要reindexreindex_axis通过自定义 list:

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

关于python - 重组 pandas 多索引列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45019166/

相关文章:

R:用 0 随机替换数据框的元素

python - 需要帮助制作 "python"程序 - 当我给出输入(1 或 2)时,如何让我的选择菜单启动不同的转换

python - pg.内部错误 : SSL SYSCALL error: EOF detected

python - python 列表中的值被替换

python - Flask 网络应用程序(Python 2.7)

python - 如何在 Pandas 中找到重复项?

python - 在 Python 中格式化绘图上的时间

python - 如何在其他列满足特定条件的情况下替换 NaN 值?

python - Pandas 滚动窗口返回一个数组

python - 如何使用元组填充数据框?