1. ホーム
  2. パイソン

[解決済み】PandasのDatetimeカラムからMonthとYearだけを別々に抽出する方法

2022-03-25 02:36:51

質問

データフレームdfに以下のカラムがあります。

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']

そして、そのインデックスを使って別の列を再サンプリングすることができます。

しかし、やはり列全体を再構成する方法が欲しいですね。 何かアイデアはありますか?

解決方法は?

年と月を別々に表示する新しいカラムが必要な場合、このようにすることができます。

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

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