在Pandas中过滤上一个工作日

2024-09-28 05:18:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个愚蠢的问题,我似乎无法让前一个工作日过滤器在pandas中正常工作。我知道解决办法可能很简单,但我无法实现。下面是我正在使用的返回空数据帧的代码。我将previous_day变量转换为datetime的原因是,在代码中,我将所有日期转换为此格式。我原本以为问题与日期类型有关,但无论发生什么情况,它都会继续存在

import pandas as pd
from pandas.tseries.offsets import BDay
import datetime

today = datetime.datetime.today()
previous_day = pd.to_datetime(today - BDay(1))
df = df[(df['Invoice Submit Date - Date'] == previous_day)]

这将返回以下结果

Empty DataFrame
Columns: [Invoice Submit Date - Date, Invoice Number, Invoice ID, Invoice Date Created - Date, 
Invoice Date - Date, Approved Date - Date, Invoice Status, Preparer - User, sum(Invoice Spend)]
Index: []

更新:这是df.head()结果

enter image description here


Tags: 代码import过滤器pandasdftodaydatetimedate
2条回答
format = "%Y/%m/%d"
df['Invoice Submit Date - Date'] = pd.to_datetime(df['Invoice Submit Date - Date'],format)

是在你比较日期之前你需要的东西

其中,格式字符串与加载的数据帧中的日期时间匹配

这不是最优雅的解决方案,但如果其他人有问题,这对我来说很有效:

import datetime as dt
import pandas as pd
from pandas.tseries.offsets import BDay

# filter on previous business day's date
today = dt.datetime.today()
df['previous_day'] = (today - BDay(1))
df['previous_day'] = df['previous_day'].dt.normalize()
previous_day = df['previous_day']

# new dataframe
df = df[(df['Invoice Submit Date - Date']) == previous_day]

相关问题 更多 >

    热门问题