Как создать сводку в списке и создать итог в python

Приведенный ниже код работает, но мне нужна помощь в обобщении и сортировке вывода, чтобы создать более читаемый вывод.

account = []
amount = []

pmtReceived = []
for payment in payments_received: 
    print ("  ({:>15}) <-  {}".format(payment['amount'] ,payment['from']))
    pmtReceived.append(payment['amount'])

    account.append(payment['to'])
    amount.append(payment['amount'])

    df = pd.DataFrame(list(zip(lst1, lst2)), columns =['To', 'Amount'])

print (df)

Текущий выход:

       Account      Amount       
0  BD001ABC... 180.0000000 
1  ACC011XY... 120.0000000
2  ACC011XY... 444.0000000  
3  012ABC1A... 190.0000000
4  012ABC1A...  50.0000000
5  012ABC1A... 110.0000000
6  012ABC1A... 400.0000000  
7  XY123AYT...   0.4900000

Необходимый вывод:

BD001ABC (1 Transaction / 180.0)
ACC011XY (2 Transaction / 564.0)
012ABC1A (4 Transaction / 750.0)
XY123AYT (1 Transaction / 0.49)

Ты знаешь Панду? Вы можете создать Dataframe из своего dict/list, а затем выполнить с ним группировку, агрегацию, сортировку и т. д. Dataframe похож на таблицу со строками и столбцами, ее легко читать, поэтому, если ваша цель просто «читабельна», то это хорошая идея.

Hoang Minh Quang FX15045 11.01.2023 03:55

Я думаю, вы просто ищете groupby с агрегатным методом, который можно использовать для одновременной передачи нескольких агрегатов. Вот учебник/блог, который должен быть исчерпывающим руководством о том, как вы можете использовать группы и агрегаты. Отказ от ответственности, автор этого блога я.

Akshay Sehgal 11.01.2023 04:52
Потяните за рычаг выброса энергососущих проектов
Потяните за рычаг выброса энергососущих проектов
На этой неделе моя команда отменила проект, над которым я работал. Неделя усилий пошла насмарку.
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
1
2
64
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Пытаться

Payments_received.sort()

Затем запустите свой цикл. если вам нужен порядок убывания, попробуйте payments_received.sort(reverse=True)

Ваше здоровье

Ответ принят как подходящий

Это то, что вы ищите?

Добавьте это в свою текущую функцию и верните result

result = df.groupby('Account')['Amount'].agg(['count','sum']).reset_index()
result['count'] = result['count'].astype(str) + ' Transactions'
print(result)
       Account           count     sum
0  012ABC1A...  4 Transactions  750.00
1  ACC011XY...  2 Transactions  564.00
2  BD001ABC...  1 Transactions  180.00
3  XY123AYT...  1 Transactions    0.49

Если вы хотите также отображать список всех транзакций, то вы можете добавить еще один метод агрегации в .agg() -

df.groupby('Account')['Amount'].agg([list,'count','sum']).reset_index()
       Account                         list  count     sum
0  012ABC1A...  [190.0, 50.0, 110.0, 400.0]      4  750.00
1  ACC011XY...               [120.0, 444.0]      2  564.00
2  BD001ABC...                      [180.0]      1  180.00
3  XY123AYT...                       [0.49]      1    0.49

Ссылки для дальнейшего чтения

Вот официальная документация на pandas.groupby и вот блог/учебник, который должен быть исчерпывающим руководством по использованию groupby в пандах. Отказ от ответственности, автор блога я.

Спасибо. Мои коды здесь кажутся отключенными. Можете ли вы показать свой полный код? ТИА

errzoned 11.01.2023 05:27

После того, как вы создадите переменную df, просто используйте 2 строки кода в моем ответе. это мой полный код.

Akshay Sehgal 11.01.2023 05:29

Я не могу заставить сумму работать: 012ABC1A... 5 Transactions 100.000000050.0000000300.0000000300.0000000250...

errzoned 11.01.2023 06:44

Отличный урок, большое спасибо

SergFSM 11.01.2023 08:46

@SergFSM рад, что тебе понравилось! @ errzoned, отредактируйте свой вопрос в этом случае, трудно понять, что не так в комментарии. Спасибо!

Akshay Sehgal 11.01.2023 20:48

Другие вопросы по теме