我在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()
答案 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保留每个组中的行顺序。