在Pandas中跨多个数据帧执行操作时保留行顺序

时间:2016-02-19 17:34:31

标签: python pandas

我在Pandas中生成了很多相关数据帧。它们都具有相同的形状和格式。所以这是数据框A: -

             free_memory       memory_in_use     active_memory
free_memory     1               0.190912742      0.375301656
memory_in_use   0.190912742     1                0.962653384
active_memory   0.375301656     0.962653384      1

这是数据框B: -

                free_memory         memory_in_use   active_memory
free_memory     1                   0.673434243     0.712713697
memory_in_use   0.673434243         1               0.991687459
active_memory   0.712713697         0.991687459     1

当我得到一个数据帧C使得它的所有单元都是A和B中相应单元的平均值时,Pandas会混合行的顺序。例如,结果C如下所示: -

                  free memory  memory in use  active memory
active memory     0.296996       0.960049       1.000000
free memory       1.000000       0.520667       0.296996
memory in use     0.520667       1.000000       0.960049

正如您所看到的,列顺序被保留但行顺序已经消失,而我没有得到漂亮的对角线1。如何保持订单与输入数据框中的相同?执行此操作的相关代码是: -

df_concat.groupby(df_concat.index).mean()

1 个答案:

答案 0 :(得分:2)

您可以将参数sort=False添加到功能groupby

print df_concat.groupby(df_concat.index, sort=False).mean()
               free_memory  memory_in_use  active_memory
free_memory       1.000000       0.190913       0.375302
memory_in_use     0.190913       1.000000       0.962653
active_memory     0.375302       0.962653       1.000000

Docs

  

排序布尔,默认为True

     

对组键进行排序。关闭它可以获得更好的性能。请注意,这不会影响每组内观察的顺序。 groupby保留每个组中的行顺序。