熊猫:每个组的每小时数据重新采样

时间:2020-09-22 05:50:52

标签: python pandas pandas-groupby pandas-resample

我有一个数据框,可以确认一天中不同时间收到的车辆的GPS位置。对于每辆车,我想对每小时数据进行重新采样,以便获得一天中每个小时的中位数报告(根据时间戳记)。对于没有对应行的小时,我想要一个空白行。 我正在使用以下代码:

for i,j in enumerate(list(df.id.unique())):
        data=df.loc[df.id==j]        
        data['hour']=data['timestamp'].hour
        data_grouped=data.groupby(['imo','hour']).median().reset_index()
        data = data_grouped.set_index('hour').reindex(idx).reset_index() #idx is a list of integers from 0 to 23.


由于我的数据框具有数百万个ID,因此我需要花费大量时间来迭代所有这些ID。有有效的方法吗?

Pandas reindex dates in Groupby不同,我每小时每小时都有多行,除了有些小时根本没有行。

1 个答案:

答案 0 :(得分:0)

在最新版本的熊猫中进行了测试,将hour列转换为具有所有可能类别的类别,然后在没有loop的情况下进行汇总:

df['hour'] = pd.Categorical(df['timestamp'].dt.hour, categories=range(24))
df1 = df.groupby(['id','imo','hour']).median().reset_index()