表示为特定时间段选择行



我有一个带有日期索引的pandas数据框架。这样的

A         B        C
date
2021-04-22      2         1        3
2021-05-22      3         2        4 
2021-06-22      4         3        5
2021-07-22      5         4        6
2021-08-22      6         5        7     

我想创建一个新的数据框架,选择仅为给定日期前2天的行。例如,如果我输入selected = '2021-08-22',我需要的是一个新的数据框架,就像下面的

A         B        C
date
2021-07-22      5         4        6
2021-08-22      6         5        7
有人能帮我一下吗?非常感谢您的帮助

您可以将索引转换为DatetimeIndex,然后使用df[start_date : end_date]

df.index = pd.to_datetime(df.index)
selected = '2021-08-22'
res = df[(pd.to_datetime(selected)-pd.Timedelta(days=2)) : selected]
print(res)
A  B  C
2021-08-22  6  5  7

我想你是指而不是

您可以使用df.apply方法来使用函数过滤数据框行。

下面是一个函数,它接收您描述的输入并返回新的数据帧:

工作示例

def filter_df(df, date, num_months):
def diff_month(row):
date1 = datetime.strptime(row["date"], '%Y-%m-%d')
date2 = datetime.strptime(date, '%Y-%m-%d')
return ((date1.year - date2.year) * 12 + date1.month - date2.month)
return df[df.apply(diff_month, axis=1) > - num_months]

print(filter_df(df, "2021-08-22", 2))

相关内容

  • 没有找到相关文章

最新更新