我有一个熊猫DataFrame与“日期”列。现在我需要过滤掉DataFrame中日期在未来两个月之外的所有行。实际上,我只需要保留接下来两个月内的行。
实现这一目标的最佳方式是什么?
我有一个熊猫DataFrame与“日期”列。现在我需要过滤掉DataFrame中日期在未来两个月之外的所有行。实际上,我只需要保留接下来两个月内的行。
实现这一目标的最佳方式是什么?
当前回答
如果您已经使用pd将字符串转换为日期格式。To_datetime你可以使用:
df = df [(df[日期]>”2018-01-01”)及(df[日期]<”2019-07-01”)
其他回答
按日期过滤数据帧的最短方法: 假设你的日期列的类型是datetime64[ns]
# filter by single day
df_filtered = df[df['date'].dt.strftime('%Y-%m-%d') == '2014-01-01']
# filter by single month
df_filtered = df[df['date'].dt.strftime('%Y-%m') == '2014-01']
# filter by single year
df_filtered = df[df['date'].dt.strftime('%Y') == '2014']
# 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]
用pyjanitor怎么样
它有很酷的功能。
pip后安装pyjanitor
import janitor
df_filtered = df.filter_date(your_date_column_name, start_date, end_date)
在pandas版本1.1.3中,我遇到了基于python datetime的索引降序排列的情况。在这种情况下
df.loc['2021-08-01':'2021-08-31']
返回空的。而
df.loc['2021-08-31':'2021-08-01']
返回预期的数据。
如果您已经使用pd将字符串转换为日期格式。To_datetime你可以使用:
df = df [(df[日期]>”2018-01-01”)及(df[日期]<”2019-07-01”)