2017-07-21 7 views
1

ich habe:Hinzufügen von zwei Strings zusammen in dt.datetime

excessmove_start = '2015-1-6' 

ich eine neue Variable excess_graph genannt haben wollen, die immer 3 Monate vor excessmove_start ist.

Also, für dieses Beispiel würde meine erwartete Ausgabe sein:

excess_graph = '2015-4-6' 
+0

Dieser Link eine sehr ähnliche Frage stellt, können Sie helfen https://stackoverflow.com/questions/9594282/ how-do-you-add-3-Monate-zu-einem-Datum-Datum-Objekt-in-Python – Jake

Antwort

2

Dies wird die Arbeit machen:

from datetime import datetime 
from dateutil.relativedelta import relativedelta 

excessmove_start = '2015-1-6' 
s = datetime.strptime(excessmove_start, "%Y-%m-%d") 
excess_graph= s+ relativedelta(months=+3) 
print(excess_graph.strftime("%Y-%m-%d")) 

Dieser druckt

2015-04-06 
+0

Ich habe keine .strptime für meine dt –

+0

hast du "von Datetime Import Datetime" ausgeführt? –

1

Let s eine Probe pd.Series von Stichen, die wie Daten aussehen

dates = pd.date_range('2016-01-01', '2016-12-31') 
s = pd.Series(np.sort(np.random.choice(dates, 10))).dt.strftime('%Y-%m-%d') 
s 

0 2016-01-08 
1 2016-01-13 
2 2016-02-08 
3 2016-03-31 
4 2016-04-02 
5 2016-04-16 
6 2016-06-07 
7 2016-06-14 
8 2016-10-13 
9 2016-12-20 
dtype: object 

Sie pd.offsets 3 Monate hinzufügen können

pd.to_datetime(s) + pd.offsets.DateOffset(months=3) 

0 2016-04-08 
1 2016-04-13 
2 2016-05-08 
3 2016-06-30 
4 2016-07-02 
5 2016-07-16 
6 2016-09-07 
7 2016-09-14 
8 2017-01-13 
9 2017-03-20 
dtype: datetime64[ns] 

Sie sie zurück drehen kann Zeichenketten

(pd.to_datetime(s) + pd.offsets.DateOffset(months=3)).dt.strftime('%Y-%m-%d') 

0 2016-04-08 
1 2016-04-13 
2 2016-05-08 
3 2016-06-30 
4 2016-07-02 
5 2016-07-16 
6 2016-09-07 
7 2016-09-14 
8 2017-01-13 
9 2017-03-20 
dtype: object 

Wir können es zerschlagen alle zusammen, um zu sehen, dass sie alle aus arbeitet

xs_start = pd.to_datetime(s) 
offset = pd.offsets.DateOffset(months=3) 
xs_graph = xs_start + offset 

check = pd.DataFrame(dict(
    excessmove_start=xs_start, 
    excess_graph=xs_graph, 
    delta=xs_graph - xs_start 
)) 

check 

    delta excess_graph excessmove_start 
0 91 days 2016-04-08  2016-01-08 
1 91 days 2016-04-13  2016-01-13 
2 90 days 2016-05-08  2016-02-08 
3 91 days 2016-06-30  2016-03-31 
4 91 days 2016-07-02  2016-04-02 
5 91 days 2016-07-16  2016-04-16 
6 92 days 2016-09-07  2016-06-07 
7 92 days 2016-09-14  2016-06-14 
8 92 days 2017-01-13  2016-10-13 
9 90 days 2017-03-20  2016-12-20 
Verwandte Themen