我有一个df
的Pandas DataFrame,DatetimeIndex
。我正在尝试根据行的索引的日期字段是5还是6来创建新列is_weekend
。
这是我的尝试:
df["is_weekend"] = np.where(df.index.dayofweek in [5,6], 1, 0)
不幸的是,我明白了:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我查看了np.where
的NumPy文档,但没有任何惊喜跳出来。
任何建议表示赞赏!
答案 0 :(得分:1)
你可以尝试:
df["is_weekend"] = df.index.dayofweek.isin([5,6]).astype(int)
或者:
df["is_weekend"] = df.apply(lambda x: 1 if x.name.dayofweek in [5,6] else 0, axis=1)
或者使用np.where,将其更改为:
df["is_weekend"] = np.where(((df.index.dayofweek==5) | (df.index.dayofweek==6)), 1, 0)