我有一个带有DATE行的数据帧,如果日期是周末日,我需要将其转换为值为1的行,如果不是,则需要将其转换为0。
到目前为止,我将数据转换为工作日
df['WEEKDAY'] = pandas.to_datetime(df['DATE']).dt.dayofweek
有一种方法可以创造这个" WEEKEND"没有功能的行?
谢谢!
答案 0 :(得分:14)
以下是我提出的解决方案:
df['WEEKDAY'] = ((pd.DatetimeIndex(df.index).dayofweek) // 5 == 1).astype(float)
基本上它所做的只是使用整数除法(//
)来测试dayofweek
的{{1}}属性是否小于5.通常这只会返回{{1} }或DatetimeIndex
,但在最后True
处增加返回1或0而不是布尔值。
答案 1 :(得分:0)
获取周末指标的另一种方法是,首先将日期列转换为星期几,然后使用这些值获取周末/非周末。这可以通过两种方式实现:
df['WEEKDAY'] = pandas.to_datetime(df['DATE']).dt.dayofweek # monday = 0, sunday = 6
df['weekend_indi'] = 0 # Initialize the column with default value of 0
df.loc[df['WEEKDAY'].isin([5, 6]), 'weekend_indi'] = 1 # 5 and 6 correspond to Sat and Sun
答案 2 :(得分:0)
获取周末指标的另一种方法是使用where
函数:
df['WEEKDAY'] = np.where((df['DATE']).dt.dayofweek) < 5,0,1)