【发布时间】:2017-12-12 00:26:40
【问题描述】:
假设我有以下 DataFrame:
df = pd.DataFrame({'item': ['Subway', 'Pasta', 'Chipotle'],
'cost': [10, 5, 9],
'date': ['2017-12-01', '2017-11-01', '2017-10-01']})
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
我能够获取2017-10 中的所有项目(在这种情况下只有一项):
print(df.set_index('date')['2017-10'])
根据pandas documentation 和this SO answer,我应该能够使用以下命令获取从2017-10 到2017-11 的所有项目(在本例中为2 个项目),但我得到一个空的DataFrame:
print(df.set_index('date')['2017-10':'2017-11'])
知道我在这里做错了什么(我使用的是熊猫版本0.21.0)吗?
此外,有没有一种有效的方法可以获得2017-10 和2017-12 中的所有项目(跳过2017-11)?我想出了以下解决方案,但我不应该像这样创建新列:
df['month'] = df['date'].dt.month
df['year'] = df['date'].dt.year
print(df[((df.month==10) & (df.year==2017) | (df.month==12) & (df.year==2017))])
【问题讨论】: