与えられた時系列から任意の日までの営業日数の計算

How to get the number of business days between two dates in pandas – StackOverflow

Pandasに標準機能としてありそうなものだが,改めて調べてそれらしいものはなさそう.「numpy.busday_count」を用いるしか無いっぽい.numpy.datetime64は余り好きじゃないんだけど.

回答の方法では,オブジェクト型を処理しているので効率が悪い.numpyとして処理する為には,numpy.ndarrayにして「datetime64[D]」に型変換するべき.

import io
import pandas as pd
import numpy as np


strings = """Date
2019-6-21
2019-6-20
2019-6-14"""

df = (
    pd.read_csv(io.StringIO(strings), parse_dates=['Date'])
    .assign(
        bdays=lambda df: np.busday_count(
            df['Date'].to_numpy().astype('datetime64[D]'), 
            np.datetime64('today')
        )
    )
)
df
    Date        bdays
0   2019-06-21  2
1   2019-06-20  3
2   2019-06-14  7

参考:
Pandas number of business days between a DatetimeIndex and a Timestamp – StackOverflow

広告
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください