我一直在寻找谷歌寻找这个问题的解决方案,但它非常具体,所以我找不到合适的策略来解决这个问题。 我们假设我有一个这样的数据框:
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
我觉得这是解决问题的错误方法,我正在寻找 一个更加熊猫般的解决方案。谢谢!
答案 0 :(得分:2)
这会创建随机长度的轨迹并附加一个段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