在pandas数据框中填充缺失的日期

3

给定数据框

df = pd.DataFrame(data=[[1,1,3],[1,2,6],[1,4,3],[2,2,6]],columns=['ID','Day','Value'])

df
Out[58]: 
   ID  Day  Value
0   1    1      3
1   1    2      6
2   1    4      3
3   2    2      6

正如您所看到的,对于ID = 1,与Day3相关的数值缺失,在ID = 2中,与Day1相关的数值缺失......我想通过添加np.nan和缺失的日期来填补这些空白。

Out[59]: 
   ID  Day  Value
0   1    1    3.0
1   1    2    6.0
2   1    3    NaN
3   1    4    3.0
4   2    1    NaN
5   2    2    6.0
1个回答

4
您需要定义一个自定义函数来执行一些重新索引逻辑:
def f(x):
    return x.set_index('Day').reindex(
               np.arange(1, x.Day.max() + 1)
          ).Value

现在,执行一个 groupby + apply 操作:
df.groupby('ID').apply(f).reset_index()

   ID  Day  Value
0   1    1    3.0
1   1    2    6.0
2   1    3    NaN
3   1    4    3.0
4   2    1    NaN
5   2    2    6.0

1
感谢您理解问题。在阅读了这个答案之前,我不确定 OP 认为自己缺少哪些数据。 - user1717828

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接