熊猫-.loc / lambda /时间序列

时间:2020-05-05 18:15:32

标签: pandas lambda loc

我进行了一次网络抓取,返回了端口拥塞表。因此,每一行代表一艘船及其到达,靠岸和离开的日子。

Link for data source

我希望代码仅检索从昨天到前7天(即从上周到昨天)的时间间隔数据。

我尝试使用以下脚本从昨天检索数据,但工作正常。 我正在使用tabela ['departure']的日期作为参考:

today = date.today().strftime("%Y-%m-%d")
today = datetime.strptime(today, '%Y-%m-%d')

yesterday = pd.to_datetime(today - pd.Timedelta('1 days 00:00:00'))

df0 = tabela.loc[lambda x: pd.to_datetime(x['departure'].dt.date) == yesterday, :]

如何获取上一周的整个间隔?

我尝试了以下操作,但它不返回数据帧:

time = ['1 days 00:00:00', '2 days 00:00:00', '3 days 00:00:00', '4 days 00:00:00', '5 days 00:00:00', '6 days 00:00:00', '7 days 00:00:00']

week = pd.to_datetime([today - pd.Timedelta(i) for i in time])

tabela.loc[lambda x: [ x for x in list(pd.to_datetime(x['departure'].dt.date)) if x in week],:]

1 个答案:

答案 0 :(得分:0)

.loc中,使用&组合多个条件。

Syntax: df.loc[condition1 & condition2]

对于您的情况,您可以这样尝试。

from datetime import datetime
import pandas as pd

today = datetime.today()
yest = today - pd.Timedelta('1 days 00:00:00')
lastweek = yest - pd.Timedelta('7 days 00:00:00')

tabela.loc[(tabela['departure']<=yest) & (tabela['departure']>=lastweek)]

希望,这会有所帮助。