如何细分熊猫数据帧



我一直在谷歌上寻找这个问题的解决方案,但它非常具体,所以我很难找到解决这个问题的适当策略。 假设我有一个这样的数据帧:

name    trajectory_id    lat    long
0       1                 -       -
0       1                 -       -
.       .                 .       .
.       .                 .       .
.       .                 .       .
0       40                -       -
0       40                -       -

从本质上讲,我有许多可以具有不同长度的轨迹。 我想通过将每个轨迹划分为来细分此数据帧 等长的段。如果轨迹不能完全分割,那么最后一段可以更短。我考虑过使用循环来做到这一点,通过 按"trajectory_id"分组的数据帧,添加另一列指示 隔离编号,例如:

name    trajectory_id    lat    long    segment_id
0       1                 -       -         0
0       1                 -       -         0
.       .                 .       .
.       .                 .       .
.       .                 .       .
0       40                -       -        150
0       40                -       -        150

我觉得这是一种解决问题的错误方法,我正在寻找 一个更熊猫的解决方案。谢谢!

这将创建随机长度的轨迹并附加一个段 id,我希望我理解正确。

import pandas as pd
import numpy as np
seg_length = 3
# Generate data
df = pd.DataFrame(np.sort(np.random.randint(low=1, high=10, size=(50,))), columns=['trajectory_id'])
# Create id for each segment grouped on trajectory_id
df['rk'] = np.ceil((df.groupby(['trajectory_id']).cumcount()+1)/seg_length)
# Final segment_id
f,i = pd.factorize(df[['trajectory_id','rk']].apply(tuple,1))
df['segment_id'] = f

最新更新