Это мой фрейм данных:
df = pd.DataFrame.from_records(data=data, coerce_float=False, index=['date'])
# date field a datetime.datetime values
account_id amount
date
2018-01-01 1 100.0
2018-01-01 1 50.0
2018-06-01 1 200.0
2018-07-01 2 100.0
2018-10-01 2 200.0
Описание проблемы
Как я могу "дополнить" мой фрейм данных начальными и конечными "пустыми датами".Я попытался переиндексировать date_range и period_range, я попытался объединить другой индекс.Я пробовал все виды вещей весь день, и я прочитал много документов.
У меня есть простой кадр данных со столбцами transaction_date
, transaction_amount
и transaction_account
.Я хочу сгруппировать этот фрейм данных так, чтобы он группировался по учетным записям на первом уровне, а затем по годам, а затем по месяцам.Затем я хочу столбец для каждого месяца с sum
от суммы транзакции за этот месяц.
Кажется, что это должно быть что-то, что легко сделать.
ОжидаетсяВывод
Это самое близкое, что я получил:
df = pd.DataFrame.from_records(data=data, coerce_float=False, index=['date'])
df = df.groupby(['account_id', df.index.year, df.index.month])
df = df.resample('M').sum().fillna(0)
print(df)
account_id amount
account_id date date date
1 2018 1 2018-01-31 2 150.0
6 2018-06-30 1 200.0
2 2018 7 2018-07-31 2 100.0
10 2018-10-31 2 200.0
И это то, чего я хочу достичь (в основном, переиндексировать данные с помощью date_range(start='2018-01-01', period=12, freq='M')
(В идеале я хотел бы, чтобы месяц был перенесен на год по верху в виде столбцов)
amount
account_id Year Month
1 2018 1 150.0
2 NaN
3 NaN
4 NaN
5 NaN
6 200.0
....
12 200.0
2 2018 1 NaN
....
7 100.0
....
10 200.0
....
12 NaN