簡體   English   中英

如何在 python 中將日期范圍划分為年份?

[英]How do I divide a date range into years in python?

我有一個像這樣的 dataframe:

ID 開始 結尾
a1 2018-03-04 2020-03-03
b1 2019-01-24 2021-05-08

我想要一個 output 這個:

ID 開始 結尾
a1 2018-03-04 2019-03-03
a1 2019-03-04 2020-03-03
b1 2019-01-24 2020-01-23
b1 2020-01-24 2021-01-23
b1 2021-01-24 2021-05-08

謝謝!

嘗試這個:

def split_date_range(row):
    start, end = row[['start', 'end']]
    dates = []

    s = start
    while True:
        e = s + pd.DateOffset(years=1) - pd.Timedelta(days=1)
        if e < end:
            dates.append((s, e))
            s = e + pd.Timedelta(days=1)
        else:
            dates.append((s, end))
            break
    return dates

tmp = df.set_index('id').apply(split_date_range, axis=1).explode()
result = pd.DataFrame([ 
    [id_, *timerange] for id_, timerange in tmp.iteritems()
], columns=['id', 'start', 'end'])

該代碼使用id_來避免與id()內置 function 沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM