如何使用python对数据帧之间的降序进行排序

时间:2018-10-08 07:04:22

标签: python-3.x pandas dataframe

我的目标是打印数据框之间的降序。 我有5个数据框,每个都有“数量”列。我需要计算每个数据帧中“数量”列的总和,并希望按照数据帧的降序打印结果。

df1:

order    quantity
 A         1
 B         4
 C         3
 D         2

df2:

order    quantity
 A         1
 B         4
 C         4
 D         2

df3:

order    quantity
 A         1
 B         4
 C         1
 D         2

df4:

order    quantity
 A         1
 B         4
 C         1
 D         2

df5:

 order    quantity
  A         1
  B         4
  C         1
  D         1

我想要的结果 降序:

df2,df1,df3,df4,df5

此处df3和df4相等,并且无论如何都可以。

建议。

2 个答案:

答案 0 :(得分:2)

sorted与自定义排序的lambda函数一起使用:

dfs = [df1, df2, df3, df4, df5]
dfs = sorted(dfs, key=lambda x: -x['quantity'].sum())
#another solution
#dfs = sorted(dfs, key=lambda x: x['quantity'].sum(), reverse=True)

print (dfs)
[  order  quantity
0     A         1
1     B         4
2     C         4
3     D         2,   order  quantity
0     A         1
1     B         4
2     C         3
3     D         2,   order  quantity
0     A         1
1     B         4
2     C         1
3     D         2,   order  quantity
0     A         1
1     B         4
2     C         1
3     D         2,   order  quantity
0     A         1
1     B         4
2     C         1
3     D         1]

编辑:

dfs = {'df1':df1, 'df2': df2, 'df3': df3, 'df4': df4, 'df5': df5}
dfs = [i for i, j in sorted(dfs.items(), key=lambda x: -x[1]['quantity'].sum())]
print (dfs)
['df2', 'df1', 'df3', 'df4', 'df5']

答案 1 :(得分:1)

您可以使用sorted方法对数据框列表进行排序,并使用sum来获取列的总和

dfs = [df2,df1,df3,df4,df5]
sorted_dfs = sorted(dfs, key=lambda df: df.quantity.sum(), reverse=True)

编辑:-仅打印按名称排序的数据框

df_map = {"df1": df1, "df2":df2, "df3":df3, "df4":df4}
sorted_dfs = sorted(df_map.items(), key=lambda kv: kv[1].quantity.sum(), reverse=True)
print(list(x[0] for x in sorted_dfs))