pandas - 如何计算熊猫数据框中同一列中两个日期之间的时间差并以工作日为单位
问题描述
我在 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()
我希望输出在新列中得到结果,如下所示
解决方案
我能够用下面的代码解决这个问题。
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()
推荐阅读
- javascript - Jquery 通过单击按钮刷新并删除“隐藏”属性
- c# - URL路由Visual Studio C#的最佳方式
- c# - 如何将文件上传到网络上的不同端口?
- python - 使用正则表达式在python中查找不同的链接结构
- node.js - 带有等待的猫鼬查询返回未定义
- python - 使用python ev3进行多线程,连接方法不起作用
- docker - Powershell:使用docker时从错误流重定向输出的问题
- python - (Discord.py) 使用 on_guild_join 事件为 dm 消息添加延迟
- c - 如何查找和替换 C 字符串中的多个或所有出现
- r - 在R中仅计算自然数的差异