2017-01-16 4 views
1

Рассмотрим DataFrame, содержащий 1 ряд 2 значений за каждый день месяца января 2010 года:Python, Панды: Boolean Индексация Сравнение DateTimeIndex на период

date_range = pd.date_range(dt(2010,1,1), dt(2010,1,31), freq='1D') 
df = pd.DataFrame(data = np.random.rand(len(date_range),2), index = date_range) 

Я хотел бы использовать Период Period('2009-12-28/2010-01-03', 'W-SUN') для создайте логический индекс, который вернет DataFrame, содержащий только этот период. Как я могу создать такой логический индекс? - Идеально, не прибегая к преобразованию периода в диапазон времени.

ответ

3

Пусть объект запроса pd.Period быть:

query = pd.Period('2009-12-28/2010-01-03', 'W-SUN') 

Вы можете сделать это непосредственно следующими способами путем доступа к его start_time и end_time атрибуты:

1) Использование DF.truncate:

df.truncate(query.start_time, query.end_time) 

2) Использование булевого индексатора:

df[(df.index >= query.start_time) & (df.index <= query.end_time)] 

3) Использование DateTime индексирование, который по умолчанию включает в себя как конечные точки:

df[query.start_time:query.end_time] 

Все эти продукты

enter image description here

+0

документы на период немного света/реципиенты для обновления всегда приветствуются – Jeff

Смежные вопросы