2017-10-22 8 views
1

私はデータフレームdfを持っていて、Dateの列を持っています。私は2つの新しいデータフレームを作成したいと思います。 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] 

このコードは機能しませんが、同様の方法がありますか?

答えて

3

あなたは日時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] 
+0

こんにちはVaishali。私がこれを試してみると、 'year'を整数値として、' TypeError:無効な型の比較 'を取得します。 「年」のタイプはどうすればよいでしょうか? – user3494047

+0

2行目にブラケットがありません – Moritz

1

あなたは~でマスクを反転させ、それを簡素化することができますし、キャスト文字列yearためintとの条件での使用のためにSeries.dt.year

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

こんにちは@jezrael。私は他の答えと同じコメントを持っています。この 'mask = df.Date.dt.year == year'を試してみると、TypeError:型の比較が不正です。私の 'year'変数はintです。それが問題だろうか? – user3494047

+0

私はすでにこれをしています。しかし、私はもう一度やり直してみると同じエラーが出ます。私がdf.Dateを実行すると、 'dtype:datetime64 [ns]' – user3494047

+0

x |私は気がついた。私の「年」は、文字列ではなくintです。ごめんなさい。私は年を使いましたが、今はうまくいきます。ごめんなさい。 – user3494047

関連する問題