Серия временных кодов для различия между каждым временным кодом и первым временным кодом - PullRequest
1 голос
/ 28 марта 2019

Как я могу получить мс от первого временного кода до каждого последующего временного кода в серии?

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')

Я абсолютно не представляю, как это сделать, и попробовал прибегнуть к помощи без особой удачи.

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Идите после этого, используя операции 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"]])

0 голосов
/ 28 марта 2019

Вычитание двух 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
...