1

如何获取从第一个时间码到系列中每个后续时间码的毫秒?

import pandas as pd

s = {1: pd.Timestamp('1970-01-28 05:28:52.235000'),
     2: pd.Timestamp('1971-02-02 12:13:23.230000'),
     3: pd.Timestamp('1970-09-04 17:14:53.120000')}

f = pd.DataFrame().from_dict(s, orient='index')

我完全不知道如何做到这一点,并且尝试过谷歌搜索但运气不佳。

4

2 回答 2

0

减去两个TimeStamps给你一个Timedelta你可以转换为一个浮点数.dt.total_seconds()。用于.iloc[0]从整个 中减去第一个元素Series

(f[0]-f[0].iloc[0]).dt.total_seconds()*1000
                                      # because milliseconds

#1    0.000000e+00
#2    3.199227e+10
#3    1.896396e+10
#Name: 0, dtype: float64
于 2019-03-27T22:19:03.480 回答
0

使用 DataFrame 操作执行此操作,以便 Pandas 完成工作。total_delta_time_ms显示第一个值和每个后续值之间的毫秒差。 row_delta_time_ms显示每行之间的毫秒数。

import pandas as pd
from pandas import Timestamp
import numpy as np
import time

s = {1: Timestamp('1970-01-28 05:28:52.235000'),
 2: Timestamp('1971-02-02 12:13:23.230000'),
 3: Timestamp('1970-09-04 17:14:53.120000')}

f = pd.DataFrame().from_dict(s, columns=["start_time"], orient='index')
f["first_time"] = f["start_time"].values[0]
f["end_time"] = f["start_time"].shift(1)

f["total_delta_time"] = f["start_time"] - f["first_time"]
f["total_delta_time_ms"] = f["total_delta_time"].astype(np.int64) // 10**9

f["row_delta_time"] = f["start_time"] - f["end_time"]
f["row_delta_time_ms"] = f["row_delta_time"].astype(np.int64) // 10**9

print(f[["total_delta_time", "total_delta_time_ms"]])

于 2019-03-27T22:20:19.200 回答