首页 > 解决方案 > Python Pandas:如何读取列表中的所有元素并从数据框中检索相应的值

问题描述

我有一个数据框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

我怎样才能得到上面的数据框?

标签: pythonpandas

解决方案


如果我理解得很好,您可以简单地使用:

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


推荐阅读