Python 用最近(以前)的时间填充多索引数据框空小时数
我有一个具有以下结构的数据帧: 时间 单位 产品类型 总销售额 2021-01-31 06:00:00+00:00 阿迪达斯 鞋 20 2021-01-31 05:00:00+00:00 阿迪达斯 鞋 13 2021-01-31 03:00:00+00:00 阿迪达斯 鞋 4. 2021-01-31 03:00:00+00:00 耐克 鞋 5. 2021-01-31 02:00:00+00:00 阿迪达斯 鞋 3. 2021-01-31 02:00:00+00:00 耐克 鞋 3.Python 用最近(以前)的时间填充多索引数据框空小时数,python,pandas,Python,Pandas,我有一个具有以下结构的数据帧: 时间 单位 产品类型 总销售额 2021-01-31 06:00:00+00:00 阿迪达斯 鞋 20 2021-01-31 05:00:00+00:00 阿迪达斯 鞋 13 2021-01-31 03:00:00+00:00 阿迪达斯 鞋 4. 2021-01-31 03:00:00+00:00 耐克 鞋 5. 2021-01-31 02:00:00+00:00 阿迪达斯 鞋 3. 2021-01-31 02:00:00+00:00 耐克 鞋 3. 首先,我们需
首先,我们需要确保Time列是datetime列
df['Time']=pd.to_datetime(df['Time'])
然后,我们需要对时间进行上采样,以生成每个公司
和产品类型
的缺失小时数
df=df.groupby(['Company','Product\u type'])。重新采样(on='Time',rule='1H')。sum()。重置索引()
这给了我们
Company Product_type Time Total_sales
0 Adidas Shoes 2021-01-31 02:00:00+00:00 3
1 Adidas Shoes 2021-01-31 03:00:00+00:00 4
2 Adidas Shoes 2021-01-31 04:00:00+00:00 0
3 Adidas Shoes 2021-01-31 05:00:00+00:00 13
4 Adidas Shoes 2021-01-31 06:00:00+00:00 20
5 Nike Shoes 2021-01-31 02:00:00+00:00 3
6 Nike Shoes 2021-01-31 03:00:00+00:00 5
然后我们可以用最近的前一小时数据填充零
result=df.sort_值(['Company','Product_type','Time'])。替换(0,np.nan).ffill()
结果是
Company Product_type Time Total_sales
0 Adidas Shoes 2021-01-31 02:00:00+00:00 3.0
1 Adidas Shoes 2021-01-31 03:00:00+00:00 4.0
2 Adidas Shoes 2021-01-31 04:00:00+00:00 4.0
3 Adidas Shoes 2021-01-31 05:00:00+00:00 13.0
4 Adidas Shoes 2021-01-31 06:00:00+00:00 20.0
5 Nike Shoes 2021-01-31 02:00:00+00:00 3.0
6 Nike Shoes 2021-01-31 03:00:00+00:00 5.0
df.asfreq('H').ffill()
?这非常有效,解决了发布的问题。但是还有一个问题我忘了提。如果今天是2021-02-05,没有更多可用数据,该怎么办?我仍然希望用一个值填充最后一个日期和当前日期之间的所有小时。有没有一个简单的方法来添加它?太好了。如果答案已解决,请将答案标记为已接受?RE:另一个问题,请开始一个新的问题,以澄清您的意图,以及期望的输出等,我会看一看。谢谢。Thanls@mullinscr新问题在这里: