даты заполнения панд + несколько столбцов - PullRequest
0 голосов
/ 17 января 2019

скажем, у меня есть следующие данные

date          id1       id2     category    value
01/01/2019    1000      2000    income      1.0
01/01/2019    1000      2010    income      1.0
01/01/2019    1000      2000    expense     1.0
01/01/2019    1000      2010    expense     1.0
01/02/2019    1000      2000    income      2.0
01/02/2019    1000      2010    income      2.0
01/02/2019    1000      2000    expense     2.0
01/02/2019    1000      2010    expense     2.0
01/04/2019    1000      2000    income      3.0
01/04/2019    1000      2010    income      3.0
01/04/2019    1000      2000    expense     3.0
01/04/2019    1000      2010    expense     3.0

Я хотел бы заполнить отсутствующую дату 01/03/2019, а также строку для каждой комбинации id1, id2 и категории. поэтому в моем случае будет добавлено 4 строки:

date          id1       id2     category    value
01/03/2019    1000      2000    income      2.0
01/03/2019    1000      2010    income      2.0
01/03/2019    1000      2000    expense     2.0
01/03/2019    1000      2010    expense     2.0

Я знаком с датами обратного и прямого заполнения, когда это единственный индекс, но вышеупомянутая проблема обратной засыпки с помощью комбинации значений из нескольких столбцов доставляет мне проблемы. Есть мысли о простом способе сделать это с помощью панд?

1 Ответ

0 голосов
/ 17 января 2019

Сначала это проблема разворота, затем она становится проблемой resample и ffill

df.date=pd.to_datetime(df.date)
df['key']=df.groupby('date').cumcount()

newdf=df.set_index(['date','key']).unstack().resample('D').mean().ffill().stack().reset_index(level=0)

newdf

          date     id1     id2  value
key                                  
0   2019-01-01  1000.0  2000.0    1.0
1   2019-01-01  1000.0  2010.0    1.0
2   2019-01-01  1000.0  2000.0    1.0
3   2019-01-01  1000.0  2010.0    1.0
0   2019-01-02  1000.0  2000.0    2.0
1   2019-01-02  1000.0  2010.0    2.0
2   2019-01-02  1000.0  2000.0    2.0
3   2019-01-02  1000.0  2010.0    2.0
0   2019-01-03  1000.0  2000.0    2.0
1   2019-01-03  1000.0  2010.0    2.0
2   2019-01-03  1000.0  2000.0    2.0
3   2019-01-03  1000.0  2010.0    2.0
0   2019-01-04  1000.0  2000.0    3.0
1   2019-01-04  1000.0  2010.0    3.0
2   2019-01-04  1000.0  2000.0    3.0
3   2019-01-04  1000.0  2010.0    3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...