我有一个数据框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]
此代码不起作用,但是有任何类似的方法吗?
答案 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]