Pandas Datetime列から月と年だけを別々に抽出する 質問する

Pandas Datetime列から月と年だけを別々に抽出する 質問する

df次の列を持つデータフレーム があります。

     ArrivalDate
936   2012-12-31
938   2012-12-29
965   2012-12-31
966   2012-12-31
967   2012-12-31
968   2012-12-31
969   2012-12-31
970   2012-12-29
971   2012-12-31
972   2012-12-29
973   2012-12-29

列の要素はpandas.tslib.Timestamp型です。年と月を抽出したいです。

私が試したことは次のとおりです:

df['ArrivalDate'].resample('M', how = 'mean')

次のエラーが発生します。

Only valid with DatetimeIndex or PeriodIndex 

それから私は試しました:

df['ArrivalDate'].apply(lambda(x):x[:-2])

次のエラーが発生します。

'Timestamp' object has no attribute '__getitem__' 

私の現在の解決策は

df.index = df['ArrivalDate']

次に、インデックスを使用して別の列を再サンプリングできます。

しかし、列全体を再構成する方法がまだ必要です。何かアイデアはありますか?

ベストアンサー1

新しい列に年と月を別々に表示したい場合は、次のようにします。

df['year'] = pd.DatetimeIndex(df['ArrivalDate']).year
df['month'] = pd.DatetimeIndex(df['ArrivalDate']).month

または...

df['year'] = df['ArrivalDate'].dt.year
df['month'] = df['ArrivalDate'].dt.month

その後、それらを組み合わせたり、そのまま操作したりすることができます。

おすすめ記事