2017-05-31 5 views
3

Ich habe die folgenden df wobei "per_end_date" ist ein Datetime-Objekt.Erstellen Sie eine neue Pandas-Spalte mit nur das Jahr einer anderen Spalte

zacks_mktv_df[:4] 

ticker | per_end_date | mkt_val 
-------------------------------- 
A  | 2016-12-31 | 14648.84 
A  | 2015-12-31 | 13704.02 
A  | 2014-12-31 | 13751.83 

Ich möchte ‚per_end_date‘ Spalte das Jahr aus jeder Zeile packen und eine weitere Zeile aus ihm machen so für meine Tabelle oben es aussehen würde.

ticker | per_end_date | mkt_val | 
-------------------------------------------- 
A  | 2016-12-31 | 14648.84 | 2016 
A  | 2015-12-31 | 13704.02 | 2015 
A  | 2014-12-31 | 13751.83 | 2014 

Ich habe das versucht.

zacks_mktv_df['per_fisc_year'] = zacks_mktv_df[zacks_mktv_df.per_end_date.dt.year] 

gibt es die Folowing Fehler:

IndexError: indices are out-of-bounds 
+1

Versuchen Sie dies: 'zacks_mktv_df ['per_fisc_year'] = zacks_mktv_df.per_end_date.dt.year' – MaxU

+0

Danke @MaxU, das auch funktioniert – TEKOrchestrator

+0

Sie sind willkommen – MaxU

Antwort

4

könnten Sie

zacks_mktv_df['per_fisc_year'] = zacks_mktv_df['per_end_date'].dt.year 

verwenden Wenn die Spalte per_end_date zB ist. datetime64.

3

Ich konnte dies auch mit .assign erreichen, wie folgt.

zacks_mktv_df.assign(per_fisc_year= zacks_mktv_df.per_end_date.dt.year) 
Verwandte Themen