Приведенный ниже код работает, но мне нужна помощь в обобщении и сортировке вывода, чтобы создать более читаемый вывод.
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)
Я думаю, вы просто ищете groupby с агрегатным методом, который можно использовать для одновременной передачи нескольких агрегатов. Вот учебник/блог, который должен быть исчерпывающим руководством о том, как вы можете использовать группы и агрегаты. Отказ от ответственности, автор этого блога я.
Пытаться
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 в пандах. Отказ от ответственности, автор блога я.
Спасибо. Мои коды здесь кажутся отключенными. Можете ли вы показать свой полный код? ТИА
После того, как вы создадите переменную df, просто используйте 2 строки кода в моем ответе. это мой полный код.
Я не могу заставить сумму работать: 012ABC1A... 5 Transactions 100.000000050.0000000300.0000000300.0000000250...
Отличный урок, большое спасибо
@SergFSM рад, что тебе понравилось! @ errzoned, отредактируйте свой вопрос в этом случае, трудно понять, что не так в комментарии. Спасибо!
Ты знаешь Панду? Вы можете создать Dataframe из своего dict/list, а затем выполнить с ним группировку, агрегацию, сортировку и т. д. Dataframe похож на таблицу со строками и столбцами, ее легко читать, поэтому, если ваша цель просто «читабельна», то это хорошая идея.