Я прочитал серию CSV-файлов. Каждый содержит историю данных транзакции для другого пользователя. Мне нужна сводка сумм транзакций по дням недели для всей группы. Сделать сводку для каждого пользователя легко, но у меня проблема с агрегацией результатов
Для каждого пользователя данные выглядят примерно так:
id data_import_id posted amount
00000000 3c221ff 2014-01-02T19:00:00.000-05:00 3656506
00000013 3c221ff 2014-01-02T19:00:00.000-05:00 3656506
00000015 3c221ff 2014-01-04T19:00:00.000-05:00 3656506
0000000a 3c221ff 2014-01-05T19:00:00.000-05:00 3656506
00000001 3c221ff 2014-01-06T19:00:00.000-05:00 3656506
Я читаю файлы .csv и создаю список Dataframes, по одному для каждого пользователя. Затем я обрабатываю кадры данных, чтобы сначала получить сводку сумм по дням недели, а затем пытаюсь агрегировать результаты по всем пользователям.
Список данных в совокупном виде выглядит примерно так для двух пользователей:
[ amount
weekday
Monday 43118
Wednesday 5872780, amount
weekday
Friday 1249
Monday 2566648
Wednesday 12000]
Из этого списка я хочу сгенерировать один фрейм данных, содержащий всего два столбца: «день недели» и «сумма», где сумма - это общее количество за день для всех пользователей.
Код, который я использую, приведен ниже, и он выдает «ValueError: Невозможно преобразовать сумму столбца в класс типа int». Я также пытался использовать 'append' и 'join', но не смог заставить их работать, возможно, потому что Dataframes не все одного размера. TIA для любой помощи / руководства.
def assess(df):
# Create list to hold results
cumulative = []
for frame in df:
# Produce a Dataframe that summarizes a users weekday totals
total_amounts = frame.groupby(["weekday"])[["amount"]].sum()
cumulative.append(total_amounts)
print(cumulative)
# *** The problem is here ***
cumulative.set_index("weekday").join(total_amounts.set_index("weekday"))
return cumulative