python - 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
我怎样才能得到上面的数据框?
解决方案
如果我理解得很好,您可以简单地使用:
df['diff'] = datetime.datetime.now() - df.end_time
推荐阅读
- join - KSQL join 乱序记录和 1:1 关系多次更新
- dart - Flutter - 如何将focusNode从父小部件设置为子小部件?
- git - GitHub 是否支持某种别名功能?
- c++ - 如何使用移动语义重载一元算术
- javascript - 跨平台 AES 256 GCM Javascript 和 Elixir
- php - 如何从 mysql 数据库中获取字符串以与 PasswordVerify() 一起使用?
- r - 如何在 R 中修复“找不到函数 mvOutlier”
- spring - 通过构建脚本更改 mongo dbname
- webpack - wasm-bindgen、asm.js 和 Emcripten 有什么区别?
- java - 将 SqlRowSet 导出到文件