Обновление: Я обновил свой пример, чтобы прояснить мой вопрос чуток
У меня есть фрейм данных с указателем даты и значения, как:Реаметр с заданным интервалом в Пандах?
date | value |
------------+-------|
category
A 2016-01-04 | 6 |
2016-01-05 | 4 |
2016-01-07 | 16 |
2016-01-10 | 0 |
2016-01-12 | 7 |
B 2016-01-20 | 0 |
2016-01-22 | 8 |
2016-01-29 | 5 |
2016-01-30 | 4 |
Я хочу ресэмплировать кадр данных, но и между определенный интервал скажите '2016-01-01' до '2016-01-31' для каждой категории и заполните все значения Na нулем.
Это то, что я хочу:
date | value |
------------+-------|
Category
A 2016-01-01 | 0 |
2016-01-02 | 0 |
2016-01-03 | 0 |
2016-01-04 | 6 |
.....
2016-01-29 | 0 |
2016-01-30 | 0 |
2016-01-31 | 0 |
B 2016-01-01 | 0 |
2016-01-02 | 0 |
2016-01-03 | 0 |
2016-01-04 | 0 |
.....
2016-01-29 | 5 |
2016-01-30 | 4 |
2016-01-31 | 0 |
я могу заставить его работать этим: (. Однако его очень медленно Есть ли лучший способ?) Пусть Вышеприведенная таблица хранится в кадре данных называется данные
idx = pd.DatetimeIndex(start='2016-1-1', end='2016-1-31', freq='D')
df=pd.DataFrame(columns=['category','date','value'])
data.reset_index('category',inplace=True)
for a,b in data.groupby(['category']):
b.set_index('date',inplace=True)
b.reindex(idx,fill_value=0)
b.reset_index('date')
df=pd.concat([df,b])
Это также отнимает много памяти. Я не хочу сначала создавать индекс даты, а затем добавлять значения. Есть ли способ трансформировать вышеприведенный с использованием пересчета.
Привет, спасибо за ваш soltn. Тем не менее, я пытаюсь переиндексировать даты в объекте groupBy. У меня есть несколько категорий, каждая категория имеет дату и некоторые значения. Я хочу определенный интервал для всех категорий, и каждый из них заполняется 0, если отсутствует значение даты. – CoderBC