В настоящее время я имею дело с фреймом данных, состоящим из сотен тысяч строк и более, с индексом, составленным из значений даты и времени.
Вы можете создать микро-образец моего фрейма данных с помощью этого кода:
import pandas as pd
import numpy as np
dates = pd.date_range(start='1/1/2015', end='1/1/2020', freq='H')
df = pd.DataFrame(dates, columns=['Date'])
df['Value'] = np.random.randint(0,1000, len(dates))
df.set_index('Date', inplace=True)
Я бы хотел выбрать все «2015» и «2018» год, или «2015-01» и «2015-06». Я знаю, как разделить между двумя значениями с SliceIndex
. Я знаю, как получить один целый год, но я не знаю, как получить два целых года с loc
.
df['2015'] # it works
df[(slice('2015', '2016')] # or df['2015':'2016']
# but
df[['2015', '2016']] # it does not work.
На самом деле у меня есть мут-индекс. Чтобы построить пример:
df1 = df.copy()
df['lvl0'] = ['a']*len(df)
df1['lvl0'] = ['b']*len(df)
mlti_df = pd.concat([df, df1]).reset_index().set_index(['lvl0', 'Date'])
mlti_df[(slice(None), ['2015', '2016'])] # <= does not work
Можно ли таким способом получить строку? Я не нашел ответа, ища вчера в течение нескольких часов.