#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных pandas, который выглядит следующим образом.
Location Part UnitCost DemandType Demand Period
NL 12345 6 GENERAL 4 2017-10-01 00:00:00
NL 12345 6 GENRAL 6 2017-12-01 00:00:00
В ноябре не было спроса, но об этом нет записей. Тогда он просто остается. Я хочу, чтобы это было добавлено. Что я могу сделать, чтобы превратить это в это:
Location Part UnitCost DemandType Demand Period
NL 12345 6 GENERAL 4 2017-10-01 00:00:00
NL 12345 6 GENERAL 0 2017-11-01 00:00:00
NL 12345 6 GENERAL 6 2017-12-01 00:00:00
Кроме того, я хочу добавить все месяцы с нулевым спросом с 2017-10-01 по 2020-03-01.
Важно, чтобы это было сделано для уникальной комбинации местоположения и детали. В моем фрейме данных более 100 уникальных комбинаций местоположения и части.
Заранее большое вам спасибо!
Ответ №1:
Вот один из способов:
df['Period'] = pd.to_datetime(df['Period']) #Make sure Period is datatime dtype
df1 = df.set_index('Period') #Set Index for resample in next statement
df1.resample('MS').ffill().assign(Demand=df1['Demand']).fillna(0).reset_index()
Вывод:
Period Location Part UnitCost DemandType Demand
0 2017-10-01 NL 12345 6 GENERAL 4.0
1 2017-11-01 NL 12345 6 GENERAL 0.0
2 2017-12-01 NL 12345 6 GENRAL 6.0
Комментарии:
1. Это дает мне следующую ошибку: ValueError: невозможно переиндексировать неуникальный индекс с помощью метода или ограничения. Существуют также другие комбинации частей местоположения, такие как: US 54321 и CN 23451