Os pandas filtram as linhas do dataframe com um ano específico

Eu tenho um dataframe df e tem uma coluna de Date . Eu quero criar dois novos frameworks de dados. Um que contém todas as linhas de df onde o ano é igual a some_year e outro data frame que contém todas as linhas de df onde o ano não é igual a some_year . Eu sei que você pode fazer df.ix['2000-1-1' : '2001-1-1'] mas a fim de obter todas as linhas que não são em 2000 requer a criação de 2 frameworks de dados extras e, em seguida, concatenando / juntando eles.

Existe alguma maneira assim?

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

Este código não funciona, mas existe algum tipo de caminho semelhante?

Você pode usar o datetime accesor.

 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] 

Você pode simplificá-lo invertendo a máscara por ~ e para uso da condição Series.dt.year com int para o year string de Series.dt.year :

 mask = df['Date'].dt.year == int(year) include = df[mask] exclude = df[~mask]