Расположение метки времени в соответствии с требуемым условием - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть список значений меток времени, хранящихся во вложенном списке ниже.

[[1462692695.0, 1462857370.0, 1463297496.0], 

[1466695088.0, 1466933174.0, 1467067583.0, 1467252502.0, 1467253381.0],

[1455009108.0, 1455218354.0, 1455221295.0], 

[1456098479.0, 1456242604.0, 1456277812.0, 1456683177.0]]

И я хочу найти разницу между вторым и первым, третьим и вторым и т. Д. Для каждого из значений вложенного списка.

Например: вновь созданная разница список:

[[164675,440126],
 [...,...,...,...],
....]

Ответы [ 3 ]

0 голосов
/ 18 февраля 2020

Поскольку вы пометили dataframe, вот решение pandas:

x = [[1462692695.0, 1462857370.0, 1463297496.0], [1466695088.0, 1466933174.0, 1467067583.0, 1467252502.0, 1467253381.0], [1455009108.0, 1455218354.0, 1455221295.0], [1456098479.0, 1456242604.0, 1456277812.0, 1456683177.0]]

df = pd.DataFrame(x)

print (df.diff(axis=1).stack().groupby(level=0).apply(list).tolist())

Или используйте понимание вложенного списка:

print ([[b-a for a,b in zip(i, i[1:])] for i in x])

Результат:

[[164675.0, 440126.0], [238086.0, 134409.0, 184919.0, 879.0], [209246.0, 2941.0], [144125.0, 35208.0, 405365.0]]
0 голосов
/ 18 февраля 2020

Этот ответ может быть полезен (используются только встроенные функции python):

x = [[1462692695.0, 1462857370.0, 1463297496.0], [1466695088.0, 1466933174.0, 1467067583.0, 1467252502.0, 1467253381.0], [1455009108.0, 1455218354.0, 1455221295.0], [1456098479.0, 1456242604.0, 1456277812.0, 1456683177.0]]
[[t - s for s, t in zip(a, a[1:])] for a in x]

Результат:

[[164675.0, 440126.0],
[238086.0, 134409.0, 184919.0, 879.0],
[209246.0, 2941.0],
[144125.0, 35208.0, 405365.0]]
0 голосов
/ 18 февраля 2020

Вы можете попробовать это.

for lst in time_stamp_list:
    for x,y in zip(lst[1:],lst):
        print(x-y)

Вышесказанное можно записать в виде списка.

[[x-y for x,y in zip(lst[1:],lst) ] for lst in time_stamp_list]
...