我有一个数据框架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'>
除此之外,我如何确定这个日期是否在一周中的哪一天。
您可以首先从Year
、Month
和Day
列组成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'])