Я сгруппировал временные ряды с пробелами.Я не хочу заполнять пробелы в отношении группировок.
date
уникален в каждом id
.
Следующее работает, но дает мне нули, где я не хочу NaN
data.groupby('id').resample('D', on='date').sum()\
.drop('id', axis=1).reset_index()
Следующие сообщения по какой-то причине не работают
data.groupby('id').resample('D', on='date').asfreq()\
.drop('id', axis=1).reset_index()
data.groupby('id').resample('D', on='date').fillna('pad')\
.drop('id', axis=1).reset_index()
Я получаю следующую ошибку: Upsampling from level= or on= selection is not supported, use .set_index(...) to explicitly set index to datetime-like
Я пытался использовать pandas.Grouper
с set_index
многоуровневым индексом или единичным индексом, но, похоже, он не увеличивает частоту моего столбца дат, поэтому я получаю непрерывные даты, или он не соответствует столбцу id
.
Pandas - версия 0.23
Попробуйте сами:
data = pd.DataFrame({
'id': [1,1,1,2,2,2],
'date': [
datetime(2018, 1, 1),
datetime(2018, 1, 5),
datetime(2018, 1, 10),
datetime(2018, 1, 1),
datetime(2018, 1, 5),
datetime(2018, 1, 10)],
'value': [100, 110, 90, 50, 40, 60]})
# Works but gives zeros
data.groupby('id').resample('D', on='date').sum()
# Fails
data.groupby('id').resample('D', on='date').asfreq()
data.groupby('id').resample('D', on='date').fillna('pad')