根据最大值和最小值填充缺失的日期Pandas

2024-09-28 01:28:30 发布

您现在位置:Python中文网/ 问答频道 /正文

如何为条件

我有一个像下面这样的数据帧。我想知道如何根据数据帧中的max-min日期来填充缺失的日期。在

Day            Movie          Rating
2017-01-01     GreatGatsby    5
2017-01-02     TopGun         5
2017-01-03     Deadpool       1
2017-01-10     PlanetOfApes   2

我怎么能做一些东西来填补缺失的日期像

^{pr2}$

Tags: 数据moviemin条件maxratingdaypr2
2条回答

使用resample+first/last/min/max

df.set_index('Day').resample('1D').first().fillna(0).reset_index()

         Day         Movie  Rating
0 2017-01-01   GreatGatsby     5.0
1 2017-01-02        TopGun     5.0
2 2017-01-03      Deadpool     1.0
3 2017-01-04             0     0.0
4 2017-01-05             0     0.0
5 2017-01-06             0     0.0
6 2017-01-07             0     0.0
7 2017-01-08             0     0.0
8 2017-01-09             0     0.0
9 2017-01-10  PlanetOfApes     2.0

如果Day不是datetime列,请先使用pd.to_datetime对其进行转换:

^{pr2}$

asfreq备选方案:

df.set_index('Day').asfreq('D').fillna(0).reset_index()

         Day         Movie  Rating
0 2017-01-01   GreatGatsby     5.0
1 2017-01-02        TopGun     5.0
2 2017-01-03      Deadpool     1.0
3 2017-01-04             0     0.0
4 2017-01-05             0     0.0
5 2017-01-06             0     0.0
6 2017-01-07             0     0.0
7 2017-01-08             0     0.0
8 2017-01-09             0     0.0
9 2017-01-10  PlanetOfApes     2.0

我相信你需要^{}

df = (df.set_index('Day')
       .reindex(pd.date_range(df['Day'].min(), df['Day'].max()), fill_value=0)
       .reset_index())

print (df)
       index         Movie  Rating
0 2017-01-01   GreatGatsby       5
1 2017-01-02        TopGun       5
2 2017-01-03      Deadpool       1
3 2017-01-04             0       0
4 2017-01-05             0       0
5 2017-01-06             0       0
6 2017-01-07             0       0
7 2017-01-08             0       0
8 2017-01-09             0       0
9 2017-01-10  PlanetOfApes       2

相关问题 更多 >

    热门问题