J'ai un dataframe df
et il a une colonne Date
. Je veux créer deux nouveaux blocs de données. Une qui contient toutes les lignes de df
où l'année est égale à some_year
et un autre bloc de données qui contient toutes les lignes de df
où l'année n'est pas égale some_year
. Je sais que tu peux faire df.ix['2000-1-1' : '2001-1-1']
mais pour obtenir toutes les lignes qui ne sont pas en 2000, il faut créer 2 trames de données supplémentaires, puis les concaténer/les joindre.
Y a-t-il un moyen comme ça?
include = df[df.Date.year == year]
exclude = df[df['Date'].year != year]
Ce code ne fonctionne pas, mais existe-t-il un moyen similaire?
Vous pouvez utiliser l'accesseur datetime.
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]
Vous pouvez le simplifier en inversant le masque par ~
et pour l'utilisation des conditions Series.dt.year
avec int
pour la chaîne de transtypage year
:
mask = df['Date'].dt.year == int(year)
include = df[mask]
exclude = df[~mask]