【发布时间】:2020-12-08 03:31:34
【问题描述】:
我有一个 pandas 数据框 df 和一个日期时间数组 holidays
df.head()
date hour count Relative Humidity Temperature Precipitation dow
0 2019-07-01 0 672 57.64 71.8 0.0 Monday
1 2019-07-01 1 359 61.61 70.8 0.0 Monday
2 2019-07-01 2 197 61.63 69.8 0.0 Monday
3 2019-07-01 3 115 63.32 69.0 0.0 Monday
4 2019-07-01 4 168 67.91 67.9 0.0 Monday
df.dtypes
date object
hour int64
count int64
Relative Humidity float64
Temperature float64
Precipitation float64
dow object
dtype: object
holidays
[datetime.date(2019, 9, 2), datetime.date(2019, 7, 4)]
我的目标是创建一个新列来指示日期是否为工作日,但以下 if else 语句会引发错误:
df['is_workday'] = df.apply(lambda row: False if (row['dow'] in ('Saturday', 'Sunday') | pd.to_datetime(row['date'], format='%Y-%m-%d') in holidays) else True)
KeyError: 'dow'
什么可能导致这个问题?
【问题讨论】:
标签: python pandas if-statement lambda