Pandas过滤具有特定年份的数据帧行

时间:2017-10-22 19:16:01

标签: python pandas datetime dataframe

我有一个数据框df,它有一个Date列。我想创建两个新的数据框架。一个包含df的所有行,其中年份等于some_year,另一个数据框包含df的所有行,其中年份不等于some_year。我知道你可以做df.ix['2000-1-1' : '2001-1-1']但是为了获得2000年以外的所有行,需要创建2个额外的数据帧,然后连接/加入它们。

有这样的方法吗?

include = df[df.Date.year == year]
exclude = df[df['Date'].year != year]

此代码不起作用,但是有任何类似的方法吗?

2 个答案:

答案 0 :(得分:16)

您可以使用日期时间访问者。

{{1}}

答案 1 :(得分:3)

您可以通过~反转掩码来简化它,对于使用int的条件使用year来演示字符串mask = df['Date'].dt.year == int(year) include = df[mask] exclude = df[~mask]

import datetime as dt
df['Date'] = pd.to_datetime(df['Date'])

include = df[df['Date'].dt.year == year]
exclude = df[df['Date'].dt.year != year]