私は、物事を並行して試してみるという道のりは、おそらくこれを複雑にしていると思います。私たちは、
import pandas as pd
dates = pd.to_datetime(['2016-01-03', '2016-09-09', '2016-12-12', '2016-03-03'])
...
はちょうどいくつかの日付を見てみましょう...う、あなたの走行距離は変更になる場合がありますので、私は大規模なサンプルにこの方法を試していないが、それはあなたのアイデアを与える必要があります
DatetimeIndex(['2016-01-01', '2016-01-18', '2016-02-15', '2016-05-30',
'2016-07-04', '2016-09-05', '2016-10-10', '2016-11-11',
'2016-11-24', '2016-12-26',
...
'2030-01-01', '2030-01-21', '2030-02-18', '2030-05-27',
'2030-07-04', '2030-09-02', '2030-10-14', '2030-11-11',
'2030-11-28', '2030-12-25'],
dtype='datetime64[ns]', length=150, freq=None)
を: -
pandas.tseries.holiday
からいくつかの休日のデータを使用し
from pandas.tseries.holiday import USFederalHolidayCalendar
holiday_calendar = USFederalHolidayCalendar()
holidays = holiday_calendar.holidays('2016-01-01')
これは私たちに与える...実際に私たちはDatetimeIndex
を望むことに注意してください
今、私たちはsearchsorted
を使用して、元の日付の最寄りの最寄りの休日のインデックスを見つける:
next_nearest_diff = pd.to_timedelta(next_nearest.values - dates.values).days
# array([15, 31, 14, 88])
あなたは注意する必要があります
indices = holidays.searchsorted(dates)
# array([1, 6, 9, 3])
next_nearest = holidays[indices]
# DatetimeIndex(['2016-01-18', '2016-10-10', '2016-12-26', '2016-05-30'], dtype='datetime64[ns]', freq=None)
は次に、2つの間の差を取りますインデックスはラップアラウンドしないで、以前の日付では、indices - 1
で計算しますが、それは(私が望む)比較的良いベースとして機能するはずです。
"パイソン・プール" - スレッドやプロセス? –
私はマルチプロセッシングを使用していました.Pool(processes = #ofCPU) –
マルチプロセッシングはコードのスピードアップを保証していませんが、コードが正しく動作していないため、そこで何が実行されているのかを知るのは難しいです。あなたはそれについてあなたの質問をしたいかもしれません(FWIW、このアプローチは私の最善の策です)。 –