在控制台中打印后,我有一个具有MultiIndex的DataFrame,如下所示:

值indA indB
方案编号组
2015年4月13日1 A -54.0 1.0 1.0
B -160.0 1.0 1.0
C -15.0 0.0 1.0
2 A -83.0 1.0 1.0
3 A -80.0 2.0 2.0
4安-270.0 2.0 2.0
2015-04-14 1 A -56.0 1.0 1.0
B -1.0 1.0 1.0
C -60.0 0.0 1.0
2 A -32.0 1.0 1.0
3 A -91.0 2.0 2.0
4 A -17.0 2.0 2.0

我在初始数据集上使用了groupbysum函数后就知道了。

我想保持相同的格式,但要根据value列对其进行排序。我已经尽力使用排序功能来做到这一点,但是我认为拥有MultiIndex的第一个索引(用于日期)没有名称的事实是一个问题。

本质上,输出应如下所示:

值indA indB
方案编号组
2015-04-13 1 B -160.0 1.0 1.0
A -54.0 1.0 1.0
C -15.0 0.0 1.0
2 A -83.0 1.0 1.0
3 A -80.0 2.0 2.0
4安-270.0 2.0 2.0
2015年4月14日1 C -60.0 1.0 1.0
A -56.0 1.0 1.0
B -1.0 0.0 1.0
2 A -32.0 1.0 1.0
3 A -91.0 2.0 2.0
4 A -17.0 2.0 2.0

有人可以启发我吗?

提前致谢。

最佳答案

您可以使用 sort_values + sort_index :

print (df.sort_values('value').sort_index(level=[0,1], sort_remaining=False))
                             value  indA  indB
           scenarioId group
2015-04-13 1          B     -160.0   1.0   1.0
                      A      -54.0   1.0   1.0
                      C      -15.0   0.0   1.0
           2          A      -83.0   1.0   1.0
           3          A      -80.0   2.0   2.0
           4          A     -270.0   2.0   2.0
2015-04-14 1          C      -60.0   0.0   1.0
                      A      -56.0   1.0   1.0
                      B       -1.0   1.0   1.0
           2          A      -32.0   1.0   1.0
           3          A      -91.0   2.0   2.0
           4          A      -17.0   2.0   2.0

另一个解决方案- sort_values reset_index set_index :
df = df.reset_index()
       .sort_values(['level_0','scenarioId','value'])
       .set_index(['level_0','scenarioId','group'])
print (df)
                             value  indA  indB
level_0    scenarioId group
2015-04-13 1          B     -160.0   1.0   1.0
                      A      -54.0   1.0   1.0
                      C      -15.0   0.0   1.0
           2          A      -83.0   1.0   1.0
           3          A      -80.0   2.0   2.0
           4          A     -270.0   2.0   2.0
2015-04-14 1          C      -60.0   0.0   1.0
                      A      -56.0   1.0   1.0
                      B       -1.0   1.0   1.0
           2          A      -32.0   1.0   1.0
           3          A      -91.0   2.0   2.0
           4          A      -17.0   2.0   2.0

关于python - 根据列值对具有MultiIndex的pandas DataFrame进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43472125/

10-09 12:43