我有一个熊猫DataFrame与“日期”列。现在我需要过滤掉DataFrame中日期在未来两个月之外的所有行。实际上,我只需要保留接下来两个月内的行。
实现这一目标的最佳方式是什么?
我有一个熊猫DataFrame与“日期”列。现在我需要过滤掉DataFrame中日期在未来两个月之外的所有行。实际上,我只需要保留接下来两个月内的行。
实现这一目标的最佳方式是什么?
当前回答
根据我的经验,前面的答案是不正确的,你不能传递一个简单的字符串,需要一个datetime对象。所以:
import datetime
df.loc[datetime.date(year=2014,month=1,day=1):datetime.date(year=2014,month=2,day=1)]
其他回答
# 60 days from today
after_60d = pd.to_datetime('today').date() + datetime.timedelta(days=60)
# filter date col less than 60 days date
df[df['date_col'] < after_60d]
我还不允许写评论,所以我会写一个答案,如果有人读了所有的评论,并找到了这个。
如果数据集的索引是一个日期时间,并且您想仅通过(例如)月份过滤它,您可以执行以下操作:
df.loc[df.index.month == 3]
它将在3月份为您过滤数据集。
如果你的日期是通过导入datetime包来标准化的,你可以简单地使用:
df[(df['date']>datetime.date(2016,1,1)) & (df['date']<datetime.date(2016,3,1))]
使用datetime包来标准化你的日期字符串,你可以使用这个函数:
import datetime
datetime.datetime.strptime
导入熊猫文库
进口熊猫作为pd
步骤1:使用pd.to_datetime()方法将日期列转换为字符串
df['date']=pd.to_datetime(df["date"],unit='s')
第二步:以任何预定的方式进行筛选(即2个月)
df = df[(df["date"] >"2022-03-01" & df["date"] < "2022-05-03")]
步骤3:检查输出
print(df)
根据我的经验,前面的答案是不正确的,你不能传递一个简单的字符串,需要一个datetime对象。所以:
import datetime
df.loc[datetime.date(year=2014,month=1,day=1):datetime.date(year=2014,month=2,day=1)]