【发布时间】:2019-10-24 00:23:44
【问题描述】:
我想在 df2 中的时间间隔 StartTime 和 EndTime 之间的时间间隔内分割 df1 中的行(按列中的值 Group_Id 在 df2)。然后将多个切片连接在一起,因为它们具有相同的格式。
所以这是df1:
Timestamp Group_Id Data
2013-10-20 00:00:05.143 11 14
2013-10-21 00:05:10.377 11 15
2013-10-22 14:22:15.501 11 19
...
2019-02-05 00:00:05.743 101 21
2019-02-10 00:00:10.407 101 33
和df2:
EndTime StartTime Group_Id
27/10/13 16:08 20/10/13 16:08 11
03/12/16 16:11 26/11/16 16:11 2
24/10/14 12:08 17/10/14 12:08 11
04/07/17 08:00 27/06/17 08:00 100
03/04/13 14:10 27/03/13 14:10 26
15/11/18 17:00 08/11/18 17:00 46
11/02/19 00:20 04/02/19 00:20 101
第一步:
我们从Group_Id,df2 列的第一行开始:11
第二步:
复制并粘贴 df1 中位于 EndTime 和 StartTime 之间的对应行,用于 Group_Id==11
第三步:
连接Group_Id(df2)中每个行的所有切片子集
希望最终数据集df3 看起来像这样:
Group_Id EndTime StartTime Timestamp Data
11 27/10/13 16:08 20/10/13 16:08 2013-10-20 20:00:05.143 14
11 27/10/13 16:08 20/10/13 16:08 2013-10-21 00:05:10.377 15
11 27/10/13 16:08 20/10/13 16:08 2013-10-22 14:22:15.501 19
...
101 11/02/19 00:20 04/02/19 00:20 2019-02-05 00:00:05.743 21
101 11/02/19 00:20 04/02/19 00:20 2019-02-10 00:00:10.407 33
...
一个错误的伪代码:
for i in df2['Group_Id']:
if i = df1['Group_Id'],
dfxx = df1[(df1['Timestamp'] <= df2.loc[i, 'EndTime']) & df1['Timestamp'] > (df2.loc['EndTime'] - dt.timedelta(days=7)])
pd.concat(dfxx for all i)
i = i+1
希望这有助于更好地说明问题。
【问题讨论】:
-
df1.Timestamp2013-10-20 00:00:05.143在27/10/13 16:08 20/10/13 16:08之外。为什么会出现在输出中? -
@Andy L. 谢谢这是一个错字,我刚刚修正了它