首页 > 解决方案 > 如何计算熊猫数据框中同一列中两个日期之间的时间差并以工作日为单位

问题描述

我在 pandas 中有一个从 csv 文件读取数据的数据框。我有一个列 event_dattim,其中包含 str 格式的日期和时间。我想计算两个日期时间之间的毫秒差异,因为在大多数情况下差异仅以毫秒为单位。我已经尝试了下面的代码并不断收到 ValueError:只允许前导负号。

用于具有数百万条记录的数据。

key_date    key_time    key_milsec  recordcd    crnode  event_dattim
6/1/2019    00.00.05    0   T   1   2019-05-31-11.00.05.731871
6/1/2019    00.00.24    430500  T   1   2019-06-01-00.00.24.552302
6/1/2019    00.00.24    430500  T   1   2019-06-04-02.54.56.658875
6/1/2019    00.00.24    430500  T   1   2019-06-04-10.35.54.820187
6/1/2019    00.00.24    430500  T   1   2019-06-04-10.37.53.829744
6/1/2019    00.00.27    453440  T   1   2019-06-01-00.00.27.553880
6/1/2019    00.00.27    453440  T   1   2019-06-04-02.54.56.668795
6/1/2019    00.00.27    453440  T   1   2019-06-04-07.40.31.163718
6/1/2019    00.00.27    453440  T   1   2019-06-04-07.41.45.995590
6/1/2019    00.00.27    453440  T   1   2019-06-05-02.52.35.476701
6/1/2019    00.00.27    453440  T   1   2019-06-05-12.47.31.263512
6/1/2019    00.00.31    70480   T   1   2019-06-01-00.00.31.149815
6/1/2019    00.00.31    70480   T   1   2019-06-04-02.54.56.676816
6/1/2019    00.00.31    70480   T   1   2019-06-04-10.35.40.414527

我尝试使用以下代码。

df['Time_diff'] = pd.to_timedelta(df['event_dattim'].astype(str)).diff().dt.total_seconds().multiply(1000).BDay()

我希望输出在新列中得到结果,如下所示

期望的输出

标签: pandasdataframetimestamp

解决方案


我能够用下面的代码解决这个问题。

df1['event_dattim'] = pd.to_datetime(df1['event_dattim'], format=r'%Y-%m-%d-%H.%M.%S.%f')

df1['difference'] = df2.groupby(['key_date','key_time','key_milsec','recordcd','crnode'])['event_dattim'].diff().dt.total_seconds() 

推荐阅读