我有一个pandas DataFrame,其中包含Year
和Month
(表示为整数)的值,如下所示:
df.head(5)
Year Month
0 1997 1
1 1997 8
2 2010 9
3 1998 1
4 2009 10
我想创建一个仅包含年份值1996,2000,2002的新DataFrame
我几乎没有使用过python或pandas所以我在这里徘徊,我试过了:
df2 = df.ix[df.year = 1996 and df.year = 2000 and df.year = 2002 ['year', 'month']]
但这不起作用 - 有人可以帮忙吗?
答案 0 :(得分:1)
使用isin
并传递您的列表以过滤df:
In [168]:
df = pd.DataFrame({'Year':np.arange(1997,2010), 'Month':np.arange(13)})
df[df['Year'].isin([1996, 2000, 2002])]
Out[168]:
Month Year
3 3 2000
5 5 2002
您尝试的内容失败,因为and
不理解数组之类的比较,您需要使用按位&
并将条件括在括号中:
df2 = df.ix[(df.year == 1996) & (df.year == 2000) & (df.year == 2002)]
此外=
的分配与等式==