Pandas - .loc/lambda/时间序列
Pandas - .loc / lambda / time series
我做了一个网络抓取,returntable 端口拥塞。因此,每一行代表一艘船及其到达、靠泊和离开的日期。
我希望我的代码只检索从昨天到前 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, :]
如何检索前一周的整个时间间隔?
我尝试了以下方法,但它没有 return 数据框:
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],:]
在.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)]
希望,这有帮助。
我做了一个网络抓取,returntable 端口拥塞。因此,每一行代表一艘船及其到达、靠泊和离开的日期。
我希望我的代码只检索从昨天到前 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, :]
如何检索前一周的整个时间间隔?
我尝试了以下方法,但它没有 return 数据框:
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],:]
在.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)]
希望,这有帮助。