Как получить? Сортировать по убыванию между датафреймами, используя python - PullRequest
0 голосов
/ 08 октября 2018

Моя цель здесь - напечатать нисходящий порядок между кадрами.У меня есть 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 голосов
/ 08 октября 2018

Использование sorted с пользовательской сортированной лямбда-функцией:

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']
0 голосов
/ 08 октября 2018

Вы можете использовать метод 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...