如何根据值(时间差值)将 DataFrame 拆分为单独的组

问题描述 投票:0回答:1

我现在在 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 后我没有找到合适的方法来处理它。有人可以帮助我吗?

python pandas split slice data-analysis
1个回答
0
投票

您可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.