2017-08-21 4 views
1

Ich habe einen Datenrahmen von Terminen mit einem DateTimeIndex wie folgt aus:Anzahl der Arbeitstage zwischen DateTimeIndex und Spalten von Terminen

pd.DataFrame(['01-20-2017']*len(pd.date_range('01-01-2017', '01-30-2017')), columns=['Dates'], index=pd.date_range('01-01-2017', '01-30-2017')) 

Ich möchte eine Spalte hinzufügen, die den Unterschied in BUSINESS Tage zwischen den Terminen zählt in die Datumsspalte und der DateTimeIndex.

ich große Schwierigkeiten habe versucht, dies zu tun, als ich ursprünglich dachte, dies einfach sein würde ...

Antwort

1

Verwendung np.busday_count()

df = pd.DataFrame({'begin' : pd.date_range('01-01-2017', '01-30-2017'), 'end' : ['01-20-2017']*len(pd.date_range('01-01-2017', '01-30-2017'))}) 
df['begin'] = pd.to_datetime(df['begin']) 
df['end'] = pd.to_datetime(df['end']) 
df['diff'] = df.apply(lambda row: np.busday_count(row['begin'], row['end']),axis=1) 

    begin end diff 
0 2017-01-01 2017-01-20 14 
1 2017-01-02 2017-01-20 14 
2 2017-01-03 2017-01-20 13 
3 2017-01-04 2017-01-20 12 
4 2017-01-05 2017-01-20 11 
+0

gute Lösung, aber vielleicht wollen diese mit Pandas ausrichtet, um zu bestätigen 'Geschäftstag Kalender ('pandas.tseries.offsets.BDay'). Der Standardwert für den Parameter 'holidays' in 'busday_count' ist eine leere Liste. –

Verwandte Themen