如何解决熊猫:每个组的每小时数据重新采样
我有一个数据框,可以确认一天中不同时间收到的车辆的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不同,我每小时每小时都有多行,除了有些小时根本没有行。
解决方法
在最新版本的熊猫中进行了测试,将hour
列转换为具有所有可能类别的类别,然后在没有loop
的情况下进行汇总:
df['hour'] = pd.Categorical(df['timestamp'].dt.hour,categories=range(24))
df1 = df.groupby(['id','imo','hour']).median().reset_index()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。