202 123432 1253542 231南 321123 125124
我有一个Pandas数据框架,它的时间序列索引约为300万行。这个数据框有几个列,我想根据列中的值,根据时间序列的连续性,从这个数据框中创建子集。数据不会在所有列上继续。通过这个,我的意思是在n列中的任意一行中都有NaN,在这种情况下,这意味着它不是一个连续的时间序列。我想从原始数据框(A)中构建子集(B,C),这些子集应该是连续的时间序列,在任何一列中都没有NaN值。
的例子:
Datafram
1002使用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
或你想做的。