pandas - 使用 Pandas 计算时间差(以毫秒为单位)

标签 pandas timestamp

我有一个数据框timings如下:

    start_ms                     end_ms
0   2020-09-01T08:11:19.336Z     2020-09-01T08:11:19.336Z
1   2020-09-01T08:11:20.652Z     2020-09-01T08:11:20.662Z
2   2020-09-01T08:11:20.670Z     2020-09-01T08:11:20.688Z

我正在尝试计算每行的 start_msend_ms 之间的时间差(以毫秒为单位),即我希望得到结果

    start_ms                     end_ms                       diff
0   2020-09-01T08:11:19.336Z     2020-09-01T08:11:19.336Z     0
1   2020-09-01T08:11:20.652Z     2020-09-01T08:11:20.662Z     10
2   2020-09-01T08:11:20.670Z     2020-09-01T08:11:20.688Z     18

我可以将时间戳逐列转换为日期时间,但我不确定是否保留值的顺序。

start_ms_time = pd.to_datetime(timings['start_ms'])
end_ms_time = pd.to_datetime(timings['end_ms'])

是否可以在 timings 中将时间戳转换为日期时间,并添加时间差列?我是否需要进行转换才能获得差异?如何计算以毫秒为单位的时间差?

最佳答案

Series.sub 减去列然后使用 Series.dt.components :

start_ms_time = pd.to_datetime(timings['start_ms'])
end_ms_time = pd.to_datetime(timings['end_ms'])

timings['diff'] = end_ms_time.sub(start_ms_time).dt.components.milliseconds
print (timings)
                   start_ms                    end_ms  diff
0  2020-09-01T08:11:19.336Z  2020-09-01T08:11:19.336Z     0
1  2020-09-01T08:11:20.652Z  2020-09-01T08:11:20.662Z    10
2  2020-09-01T08:11:20.670Z  2020-09-01T08:11:20.688Z    18

或者Series.dt.total_seconds乘以 1000 并转换为整数:

timings['diff'] = end_ms_time.sub(start_ms_time).dt.total_seconds().mul(1000).astype(int)
print (timings)
                   start_ms                    end_ms  diff
0  2020-09-01T08:11:19.336Z  2020-09-01T08:11:19.336Z     0
1  2020-09-01T08:11:20.652Z  2020-09-01T08:11:20.662Z    10
2  2020-09-01T08:11:20.670Z  2020-09-01T08:11:20.688Z    18

关于pandas - 使用 Pandas 计算时间差(以毫秒为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64026157/

相关文章:

python - 摆脱 Pandas 或其 PieChart 可视化引擎中无关紧要数据的聪明方法?

java.util.Date 到 java.sql.Date 不包含时间

python - 替换多索引中除第一行以外的所有内容

python - 基于 groupby 拆分 pandas 数据帧

sql-server - SQL Server 2008 行插入和更新时间戳

hadoop - 从Pig生成的CurrentTime()在Hive Datetime列中显示为NULL

javascript - 为 Postgresql tswtz 数据类型生成带有时区的服务器端时间戳

javascript - Safari (Mac OS X Lion) 向 position.timestamp 调用返回错误的 epochtime 值

python - 分类数据是/否到 0/1 python - 这是正确的方法吗?

python - 如果在列文本字符串中找到值,如何使用字典键添加新的数据框列