python - pandas 填充日期+多列

标签 python pandas numpy

假设我有以下数据

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/

相关文章:

python - 如何将 Pandas 中的嵌套 json 分解为行?

python - 计算 pandas 列中 False 或 True 的出现次数

python - 如何从 csv 文件中读取 python 中的数字?

python - numpy中轴的长度是多少

python - 日志记录中的格式类型

python - 在 django 中上传文件和一些数据的 RESTful 方式

python - 在python中使用默认消息引发内置异常

Pandas 数据帧重采样 : How to fill nan with previous "close" value?

python - 如何将数字组合成一行

python - 并行抓取数据+批处理