我现在在 Python 中使用 Pandas 来处理一些数据。
简化的数据框是
[ID, TimeDiff] 和其他一些不重要的列。
例如:
73 1.166667
74 1.166667
75 2.183333
76 3.466667
77 2.666667
78 Na
TimeDiff 表示数据ID 中时间的差值。 3.466667 表示 ID 76 和 ID 77 之间的时间为 3.466667 小时。 我想分割船舶数据以确保时间差值在 2 小时以内 所以我需要将 DataFrame 分成 N 个不同的组(在本例中,N = 4)。
我需要得到这样的结果:每当 TimeDiff >= 2 创建另一个组
--------------
73 1.166667
74 1.166667
-------------
75 2.183333
--------------
76 3.466667
--------------
77 NaN
我尝试过在pandas中使用Groupby。
df.groupby('TimeDiff')
但显然,这不是我想要的。 我现在尝试像这样逐步拆分 DataFrame: 来自
73 1.166667
74 1.166667
--------------
75 2.183333
76 3.466667
77 2.666667
78 Na
至
73 1.166667
74 1.166667
--------------
75 2.183333
--------------
76 3.466667
77 2.666667
78 Na
然后到
73 1.166667
74 1.166667
--------------
75 2.183333
--------------
76 3.466667
77 2.666667
78 Na
......
终于到了我想要的:
--------------
73 1.166667
74 1.166667
-------------
75 2.183333
--------------
76 3.466667
--------------
77 NaN
4组数据。但在搜索 Google 和 StackOverflow 后我没有找到合适的方法来处理它。有人可以帮助我吗?
您可以使用
cumsum
创建您的群组:
df['Group'] = df['TimeDiff'].fillna(np.inf).gt(2).cumsum()
print(df)
# Output
ID TimeDiff Group
0 73 1.166667 0
1 74 1.166667 0
2 75 2.183333 1
3 76 3.466667 2
4 77 2.666667 3
5 78 NaN 4