当前位置:  开发笔记 > 编程语言 > 正文

python - 填写关于pandas中特定属性的缺失日期

如何解决《python-填写关于pandas中特定属性的缺失日期》经验,为你挑选了1个好方法。

我的数据如下所示:

id, date, target
1,2016-10-24,22
1,2016-10-25,31
1,2016-10-27,44
1,2016-10-28,12
2,2016-10-21,22
2,2016-10-22,31
2,2016-10-25,44
2,2016-10-27,12

我想在id中填写缺少的日期.例如,id = 1的日期范围是2016-10-24~2016-10-28,缺少2016-10-26.此外,id = 2的日期范围是2016-10-21~2016-10-27,2016-10-23,2016-10-24和2016-10-26都不见了.我想填写缺少的日期并将目标值填写为0.

因此,我希望我的数据如下:

id, date, target
1,2016-10-24,22
1,2016-10-25,31
1,2016-10-26,0
1,2016-10-27,44
1,2016-10-28,12
2,2016-10-21,22
2,2016-10-22,31
2,2016-10-23,0
2,2016-10-24,0
2,2016-10-25,44
2,2016-10-26,0
2,2016-10-27,12

有人能帮助我吗?

提前致谢.



1> jezrael..:

您可以使用groupby带有resample-然后是问题fillna-因此需要asfreq先:

#if necessary convert to datetime
df.date = pd.to_datetime(df.date)
df = df.set_index('date')
df = df.groupby('id').resample('d')['target'].asfreq().fillna(0).astype(int).reset_index()
print (df)
    id       date  target
0    1 2016-10-24      22
1    1 2016-10-25      31
2    1 2016-10-26       0
3    1 2016-10-27      44
4    1 2016-10-28      12
5    2 2016-10-21      22
6    2 2016-10-22      31
7    2 2016-10-23       0
8    2 2016-10-24       0
9    2 2016-10-25      44
10   2 2016-10-26       0
11   2 2016-10-27      12

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有