在Pandas DataFrame中查找日期是周末还是工作日



我有一个数据框架df,它有3列:年、月和日期。我想用这些信息来确定这个日期是周末还是工作日,以及它是一周中的哪一天。

我正在尝试使用下面的代码来确定它是周末还是工作日,但它不工作

from datetime import datetime
from datetime import date
def is_weekend(d = datetime.today()):
return d.weekday() > 4
df['weekend'] = df.apply(lambda x: is_weekend(date(x['Year'], x['Month'], x['Day'])), axis=1)

我得到这个错误:

TypeError: cannot convert the series to <class 'int'>

除此之外,我如何确定这个日期是否在一周中的哪一天。

您可以首先从YearMonthDay列组成dates系列:

dates = pd.to_datetime({"year": df.Year, "month": df.Month, "day": df.Day})

然后您可以检查dayofweek(注意它前面的dt访问器(:

df["Day of Week"] = dates.dt.dayofweek

并用您的逻辑形成is_weekend列:

df["Is Weekend"] = dates.dt.dayofweek > 4

其中我们不再需要apply,因为我们有一个统一的dates系列,并且它支持这种一次性比较。

我们用一种可读的、不言自明的方式来做它怎么样?

dates = pd.to_datetime({"year": df.Year, "month": df.Month, "day": df.Day})
df["Is Weekend"] = dates.dt.day_name().isin(['Saturday', 'Sunday'])

相关内容

  • 没有找到相关文章

最新更新