基于连续性创建pandas数据框架的子集



我有一个Pandas数据框架,它的时间序列索引约为300万行。这个数据框有几个列,我想根据列中的值,根据时间序列的连续性,从这个数据框中创建子集。数据不会在所有列上继续。通过这个,我的意思是在n列中的任意一行中都有NaN,在这种情况下,这意味着它不是一个连续的时间序列。我想从原始数据框(A)中构建子集(B,C),这些子集应该是连续的时间序列,在任何一列中都没有NaN值。

的例子:

Datafram

10022021234321253542231南321123125124

使用cumsum设置连续组:

df['subset'] = df.isna().any(axis=1).cumsum().loc[df.notna().all(axis=1)]
print(df)
# Output:
predicted_at    x1     x2  subset
0  2021-08-21 11:00:00 UTC  1002  202.0     0.0
1  2021-08-21 12:00:00 UTC   123  432.0     0.0
2  2021-08-21 13:00:00 UTC  1253  542.0     0.0
3  2021-08-21 14:00:00 UTC   231    NaN     NaN
4  2021-08-21 15:00:00 UTC    23  232.0     1.0
5  2021-08-21 16:00:00 UTC   321  123.0     1.0
6  2021-08-21 17:00:00 UTC   125  124.0     1.0

现在你可以做groupby或你想做的。

最新更新