Pandas DateTime 索引,根据时间和日期过滤器为列赋值
Pandas DateTime index, assign value to column based on based on time AND day filter
我正在尝试根据日期和时间过滤器为列分配一个值。
假设我创建了一个数据框:
import pandas as pd
from datetime import date
date_range = pd.DataFrame({'date': pd.date_range(date(2019,8,30), date.today(), freq='15T')})
date_range.index = date_range['date']
然后我可以过滤当天(星期日)并分配一个值:
date_range['Happy Hour'] = ((pd.DatetimeIndex(date_range.index).dayofweek) // 6 == 'Yes!!')
而且我还可以筛选时间范围并分配值
date_range.loc[date_range.between_time('15:00','18:59').index, 'Happy Hour'] = 'Yes!!'
但肯定有一种简单的方法可以将这些组合成一行代码,因此在 15:00 和 19:00 之间的每个星期天,欢乐时光栏都会充满 'Yes!!'
首先过滤星期日,然后过滤时间:
idx = date_range[date_range.index.dayofweek == 6].between_time('15:00','18:59').index
date_range.loc[idx, 'Happy Hour'] = 'Yes!!'
print (date_range)
我正在尝试根据日期和时间过滤器为列分配一个值。 假设我创建了一个数据框:
import pandas as pd
from datetime import date
date_range = pd.DataFrame({'date': pd.date_range(date(2019,8,30), date.today(), freq='15T')})
date_range.index = date_range['date']
然后我可以过滤当天(星期日)并分配一个值:
date_range['Happy Hour'] = ((pd.DatetimeIndex(date_range.index).dayofweek) // 6 == 'Yes!!')
而且我还可以筛选时间范围并分配值
date_range.loc[date_range.between_time('15:00','18:59').index, 'Happy Hour'] = 'Yes!!'
但肯定有一种简单的方法可以将这些组合成一行代码,因此在 15:00 和 19:00 之间的每个星期天,欢乐时光栏都会充满 'Yes!!'
首先过滤星期日,然后过滤时间:
idx = date_range[date_range.index.dayofweek == 6].between_time('15:00','18:59').index
date_range.loc[idx, 'Happy Hour'] = 'Yes!!'
print (date_range)