首页 > 解决方案 > 在多索引熊猫数据框中交换两行

问题描述

对于简单的表,如下所示:

df = pd.DataFrame([[1,2,3],[4,5,6]], index=['a','b'])

   0  1  2
a  1  2  3
b  4  5  6

我们可以通过调用交换两行'a'和'b':

df.loc[['b','a'],:]
Out[21]: 
   0  1  2
b  4  5  6
a  1  2  3

我预计 loc() 调用对以下多级索引表具有相同的效果:

df = pd.DataFrame(np.arange(12).reshape((4, 3)),
    index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
    columns=[['Ohio', 'Ohio', 'Colorado'],
    ['Green', 'Red', 'Green']])

     Ohio     Colorado
    Green Red    Green
a 1     0   1        2
  2     3   4        5
b 1     6   7        8
  2     9  10       11

但是当我运行时:

df.loc[['b','a'],:]

表保持不变。

我可以通过调用以下命令来交换行:

df.reindex(index=['b', 'a'], level=0)

     Ohio     Colorado
    Green Red    Green
b 1     6   7        8
  2     9  10       11
a 1     0   1        2
  2     3   4        5

我的怎么了df.loc[['b','a'],:]

标签: pythonpandasswapmulti-index

解决方案


推荐阅读