在熊猫数据框中以间隔的日期填写缺失的观测值

让我们说我有以下熊猫数据框:

+---------------------+---------+-------+-----+
| observed_cats_count |  year   | month | day |
+---------------------+---------+-------+-----+
|                   2 |    2019 |    10 |  19 |
|                   3 |    2019 |    10 |  18 |
|                   5 |    2019 |    10 |  16 |
+---------------------+---------+-------+-----+

还有两个边界日期,例如2019-10-152019-10-20,我知道所有缺失的观测值都应具有observed_cats_count=0

如何为间隔中的所有缺失日期插入一行并获取以下数据框:

+---------------------+---------+-------+-----+
| observed_cats_count |  year   | month | day |
+---------------------+---------+-------+-----+
|                   0 |    2019 |    10 |  20 |
|                   2 |    2019 |    10 |  19 |
|                   3 |    2019 |    10 |  18 |
|                   0 |    2019 |    10 |  17 |
|                   5 |    2019 |    10 |  16 |
|                   0 |    2019 |    10 |  15 |
+---------------------+---------+-------+-----+
xqhong0826 回答:在熊猫数据框中以间隔的日期填写缺失的观测值

我将使用pd.date_range来构建一个新的数据框,然后合并回dffillna

dates = pd.date_range('2019-10-20','2019-10-15',freq='-1D')
df1 = pd.DataFrame({'year': dates.year,'month': dates.month,'day': dates.day})
df2 = df1.merge(df,how='left').fillna(0)

Out[413]:
   year  month  day  observed_cats_count
0  2019     10   20                  0.0
1  2019     10   19                  2.0
2  2019     10   18                  3.0
3  2019     10   17                  0.0
4  2019     10   16                  5.0
5  2019     10   15                  0.0
,

想法是由to_datetimeDataFrame.set_index创建的DatetimeIndex,因此可以在Series.reindex创建的所有日期时间使用date_range,然后从{{1 }},按DataFrame.sort_index排序,最后用DatetimeIndexDataFrame.reset_index删除:

drop=True
本文链接:https://www.f2er.com/3082371.html

大家都在问