データフレームdf
があり、Date
列があります。 2つの新しいデータフレームを作成します。年がsome_year
に等しいdf
のすべての行を含むものと、年がsome_year
に等しくないdf
のすべての行を含む別のデータフレーム。 df.ix['2000-1-1' : '2001-1-1']
を実行できることは知っていますが、2000年にないすべての行を取得するには、2つの追加データフレームを作成し、それらを連結/結合する必要があります。
このような方法はありますか?
include = df[df.Date.year == year]
exclude = df[df['Date'].year != year]
このコードは機能しませんが、同様の方法はありますか?
日時アクセサーを使用できます。
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]
マスクを~
で反転し、条件に Series.dt.year
を使用してキャスト文字列int
にyear
を指定することで、単純化できます。
mask = df['Date'].dt.year == int(year)
include = df[mask]
exclude = df[~mask]