【发布时间】:2019-09-10 06:42:52
【问题描述】:
我有一个 pandas 数据框,其中包含 date、week_day、public_holiday 和weekend 列。
weekday Date Public_Holiday? Weekend?
5 2015-01-10 no yes
0 2015-01-12 no no
1 2015-01-13 no no
2 2015-01-14 no no
3 2015-01-15 no no
4 2015-01-16 no no
5 2015-01-17 no yes
6 2015-01-18 no yes
0 2015-01-19 no no
1 2015-01-20 no no
2 2015-01-21 no no
3 2015-01-22 no no
4 2015-01-23 yes no
5 2015-01-24 no yes
6 2015-01-25 no yes
1 2015-01-27 no no
2 2015-01-28 no no
3 2015-01-29 no no
4 2015-01-30 no no
5 2015-01-31 no yes
0 2015-02-02 no no
1 2015-02-03 no no
2 2015-02-04 no no
3 2015-02-05 no no
4 2015-02-06 no no
5 2015-02-07 no yes
6 2015-02-08 no yes
0 2015-02-09 yes no
1 2015-02-10 no no
2 2015-02-11 no no
我需要添加一个带有长周末标志的附加列。输出应如下所示。
long_weekend weekday Date Public_Holiday? Weekend?
0 5 2015-01-10 no yes
0 0 2015-01-12 no no
0 1 2015-01-13 no no
0 2 2015-01-14 no no
0 3 2015-01-15 no no
0 4 2015-01-16 no no
0 5 2015-01-17 no yes
0 6 2015-01-18 no yes
0 0 2015-01-19 no no
0 1 2015-01-20 no no
0 2 2015-01-21 no no
0 3 2015-01-22 no no
1 4 2015-01-23 yes no
1 5 2015-01-24 no yes
1 6 2015-01-25 no yes
0 1 2015-01-27 no no
0 2 2015-01-28 no no
0 3 2015-01-29 no no
0 4 2015-01-30 no no
0 5 2015-01-31 no yes
0 0 2015-02-02 no no
0 1 2015-02-03 no no
0 2 2015-02-04 no no
0 3 2015-02-05 no no
0 4 2015-02-06 no no
1 5 2015-02-07 no yes
1 6 2015-02-08 no yes
1 0 2015-02-09 yes no
0 1 2015-02-10 no no
0 2 2015-02-11 no no
常规周末不被视为长周末。仅当星期五或星期一以及在某些情况下星期四或星期二是假期时,整个系列才被视为长周末。
这是我在下面尝试过的
df['long_weekend'] = np.where((df['Public_Holiday?'] == 'yes') | (df['Weekend?'] == 'yes'), 1, 0)
df['weekday'] = df['Predicted_Date'].dt.dayofweek
df['long_weekend'] = np.where(((df['long_weekend'] == 1) & (df['weekday'] == 4)) | (df['long_weekend'] == 1) & (df['weekday'] == 0)), 'yes','no')
这给了我以下输出,甚至正常工作日为 1。
long_weekend weekday Date Public_Holiday? Weekend?
1 5 2015-01-10 no yes
0 0 2015-01-12 no no
0 1 2015-01-13 no no
0 2 2015-01-14 no no
0 3 2015-01-15 no no
0 4 2015-01-16 no no
1 5 2015-01-17 no yes
1 6 2015-01-18 no yes
0 0 2015-01-19 no no
0 1 2015-01-20 no no
0 2 2015-01-21 no no
0 3 2015-01-22 no no
1 4 2015-01-23 yes no
1 5 2015-01-24 no yes
1 6 2015-01-25 no yes
0 1 2015-01-27 no no
0 2 2015-01-28 no no
0 3 2015-01-29 no no
0 4 2015-01-30 no no
1 5 2015-01-31 no yes
0 0 2015-02-02 no no
0 1 2015-02-03 no no
0 2 2015-02-04 no no
0 3 2015-02-05 no no
0 4 2015-02-06 no no
1 5 2015-02-07 no yes
1 6 2015-02-08 no yes
1 0 2015-02-09 yes no
0 1 2015-02-10 no no
0 2 2015-02-11 no no
我怎样才能让它工作?任何帮助都会很棒。提前致谢。
【问题讨论】:
-
您为 df['long_weekend'] 发布的输出格式为 -
1 0 1,但在您的代码中,您将yes no分配给 df['long_weekend'],您能确认一下吗?跨度>
标签: python python-3.x pandas