用loc计算时间增量?

2024-05-17 08:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我对应该相当容易的事情有点意见。我的df如下所示:

Index                 ZeitstempelSBA        Status1 counting
2018-01-02 12:20:00                         SR_OPEN    56
2018-01-02 12:21:00                         SR_OPEN    57
2018-01-02 12:22:00                         SR_OPEN    58
2018-01-02 12:23:00                         SR_OPEN    59
2018-01-02 12:24:00                         SR_OPEN    60
2018-01-02 12:25:00   2018-01-02 12:25:05   SR_CLEAR   0
2018-01-02 12:26:00                         SR_CLEAR   1
2018-01-02 12:27:00   2018-01-02 12:27:13   SR_CLOSE   0
2018-01-02 12:28:00                         SR_CLOSE   1
2018-01-02 12:29:00                         SR_CLOSE   2
2018-01-02 12:30:00                         SR_OPEN    0
2018-01-02 12:31:00                         SR_OPEN    1
2018-01-02 12:32:00                         SR_OPEN    2
2018-01-02 12:33:00                         SR_OPEN    3
2018-01-02 12:34:00                         SR_OPEN    4
2018-01-02 12:35:00   2018-01-02 12:35:11   SR_CLEAR   0
2018-01-02 12:36:00                         SR_CLEAR   1
2018-01-02 12:37:00   2018-01-02 12:37:17   SR_CLOSE   0
2018-01-02 12:38:00                         SR_CLOSE   1
2018-01-02 12:39:00                         SR_CLOSE   2

我试图计算整个数据帧中第一个清除间隔和第一个关闭间隔之间的时间差。我试过使用,但没有达到预期效果:

begin = df.loc[(df.Status1 == 'SR_CLEAR')&(df.counting == 0),'ZeitstempelSBA']
end = df.loc[(df.Status1 == 'SR_CLOSE')&(df.counting == 0),'ZeitstempelSBA'] 
end-begin

输出应该是每个SR_清除(计数==0)和SR_关闭(计数==0)情况之间的时间增量数组/列表


Tags: dfclose间隔open事情locend意见
1条回答
网友
1楼 · 发布于 2024-05-17 08:20:28

您可以使用groupby.min.to_dict()来代替.loc

s = df[df['counting'].eq(0)].groupby("Status1")["ZeitstempelSBA"].min().to_dict()


print(s)

{'CLEAR': Timestamp('2018-01-02 12:25:05'),
 'CLOSE': Timestamp('2018-01-02 12:27:13')}

s['CLOSE'] - s['CLEAR'] 
Timedelta('0 days 00:02:08')

相关问题 更多 >