2017-12-17 2 views
1

Ich versuche, Jahre von einer Spalte basierend auf einer Zahl in einer anderen Spalte zu subtrahieren.Pandas: Ändern der Jahre basierend auf einem int-Wert

Das ist, was ich meine:

base_date   amount_years 
0 2006-09-01   2 
1 2007-04-01   4 

Das Ergebnis wäre:

base_date   amount_years 
0 2008-09-01   2 
1 20011-04-01  4 

Gibt es eine Möglichkeit, dies in Python zu erreichen?

Antwort

1

Verwenden DateOffset mit apply und axis=1 für Prozess pro Zeilen:

f = lambda x: x['base_date'] + pd.offsets.DateOffset(years=x['amount_years']) 
df['base_date'] = df.apply(f, axis=1) 
print (df) 
    base_date amount_years 
0 2008-09-01    2 
1 2011-04-01    4 
+0

Es scheint mir diese Fehlermeldung zu geben: Typeerror: ('muss str werden, nicht relativedelta', 'am Index 7 aufgetreten') – Matt

+0

Was ist der Wert im Index '7'? 'print (df.loc [7, 'menge_years'])' '? – jezrael

+0

Nevermind, funktionierte perfekt nach dem Konvertieren der Spalten zu Datetime. Nochmals vielen Dank, du hast mir vor zwei Tagen geholfen :) – Matt

Verwandte Themen