【发布时间】:2020-05-14 17:45:45
【问题描述】:
我目前正在处理数十万行及更多行的数据框,并使用由日期时间值创建的索引。
您可以使用以下代码创建我的数据框的微样本:
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
是否可以通过这种方式获取行?昨天找了几个小时也没找到答案。
【问题讨论】:
标签: python pandas datetime slice multi-index