Решение с гистограммой, используя numpy
:
import pandas as pd
import numpy as np
df_p = pd.DataFrame([
{
"title": "\"Amiről a kövek mesélnek\"",
"startTime_dt": "2019-05-29T00:00:40Z"
},
{
"title": "Koffer - Kedvcsináló Kul(t)túrák Külföldön",
"startTime_dt": "2019-05-29T00:22:44Z"
},
{
"title": "Gubancok",
"startTime_dt": "2019-05-29T00:48:08Z"
}
])
df_v = pd.DataFrame([
{
"logid": 191605,
"time": "2019-05-29 0:00:17"
},
{
"logid": 191607,
"time": "2019-05-29 0:00:26"
},
{
"logid": 191611,
"time": "2019-05-29 0:01:20"
}
])
df_p.startTime_dt = pd.to_datetime(df_p.startTime_dt)
df_v.time = pd.to_datetime(df_v.time)
# here's part where I convert datetime to timestamp in seconds - astype(int) casts it to nanoseconds, hence there's // 10**9
programmes_start = df_p.startTime_dt.astype(int).values // 10**9
viewings_starts = df_v.time.astype(int).values // 10**9
# make bins for histogram
# add zero to the beginning of the array
# add value that is time an hour after the start of the last given programme to the end of the array
programmes_start = np.pad(programmes_start, (1, 1), mode='constant', constant_values=(0, programmes_start.max()+3600))
histogram = np.histogram(viewings_starts, bins=programmes_start)
print(histogram[0]
# prints [2 1 0 0]
Интерпретация: было 2 записи в журнале до начала «Amir Aml a kövek mesélnek», 1 запись в журнале между запусками «Amiről a kövek mesélnek» и «Koffer - Kedvcsináló Kul (t) túrák Külföldön», 0 записей в журнале между запусками «Koffer - Kedvcsináló Kul (t) túrák Külföldön» и «Gubancok» и 0 записей после начала «Gubancok». Что, глядя на предоставленные вами данные, кажется правильным :) Надеюсь, это поможет.
ПРИМЕЧАНИЕ: я предполагаю, что у вас есть дата просмотров. У вас их нет в файле журнала примера, но они появляются на скриншоте - так что я предположил, что вы можете как-то вычислить / получить их, и добавил их вручную в dict ввода.