将数据帧日期行转换为周末/非周末值

时间:2015-08-28 19:44:08

标签: python pandas dataframe

我有一个带有DATE行的数据帧,如果日期是周末日,我需要将其转换为值为1的行,如果不是,则需要将其转换为0。

到目前为止,我将数据转换为工作日

df['WEEKDAY'] = pandas.to_datetime(df['DATE']).dt.dayofweek

有一种方法可以创造这个" WEEKEND"没有功能的行?

谢谢!

3 个答案:

答案 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)