Python Pandas: как прочитать все элементы в списке и получить соответствующие значения из фрейма данных - PullRequest
0 голосов
/ 21 октября 2019

У меня есть датафрейм df следующим образом:

loc     end_time            ts          file
TPHD    2019-06-03 16:45:30 43619.4375  trial.csv
TPCL    2019-06-03 16:30:00 43619.5520  trial.csv
TPHD    2019-06-03 16:15:30 43619.6774  trial.csv
TPBL    2019-06-03 16:15:30 43619.4479  trial.csv
TPBL    2019-06-03 14:43:45 43619.6982  mgrflash.csv
TPCL    2019-06-03 13:15:00 43619.4375  mgrflash.csv
TPCL    2019-06-03 11:15:30 43619.6875  mgrflash.csv
TPCL    2019-06-03 10:45:00 43619.6137  trial.csv
TPBL    2019-06-03 10:30:00 43619.6774  mgrflash.csv
TPHD    2019-06-03 10:30:00 43619.4690  mgrflash.csv

Цель: я хочу найти разницу во времени между end_time и указанным временем, например datetime.datetime.now(), для каждого местоположения и файла. Для этого я попытался сделать следующее:

df_test = df.drop_duplicates(['loc','file'])
location = ['TPCL','TPBL','TPHD']
now_dt = dt.now()
for i in location:
    if i in df_test['loc'].tolist():
        t_update_loc = df_test.loc[df_test['loc']==i,'end_time']
        d = []
        for j in t_update_loc.tolist():
            diff = now_dt - j
            d.append(diff)

Приведенный выше код не показывает правильный результат. На самом деле он собирает только TPHD значений. Вывод вышеприведенного приведен ниже:

_libs.tslibs.timedeltas.Timedelta  1     140 days 02:55:06.056170
_libs.tslibs.timedeltas.Timedelta  1     140 days 09:10:36.056170

В идеале я хочу следующий кадр данных:

loc    time_stamp
TPCL   2019-06-03 16:30:00
TPBL   2019-06-03 16:15:30
TPHD   2019-06-03 16:45:30

Как получить указанный выше кадр данных?

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Предполагая, end_time является объектом даты и времени

import datetime

df = df.drop_duplicates(['loc']).assign(time_stamp=lambda x: datetime.datetime.now() - x['end_time'])

0 голосов
/ 21 октября 2019

если я правильно понял, вы можете просто использовать:

df['diff'] = datetime.datetime.now() - df.end_time

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...