假设我有以下数据
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
当这是唯一的索引时,我熟悉回填和前向填充日期,但是上述通过多个列的值组合进行回填的特殊问题给我带来了麻烦。有什么简单的方法可以使用 pandas 来做到这一点吗?
最佳答案
首先是一个枢轴问题,然后成为一个重新采样
和填充
问题
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
关于python - pandas 填充日期+多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54227944/