如何细分pandas数据帧

时间:2018-06-15 10:27:36

标签: python pandas dataframe

我一直在寻找谷歌寻找这个问题的解决方案,但它非常具体,所以我找不到合适的策略来解决这个问题。 我们假设我有一个这样的数据框:

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

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

1 个答案:

答案 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