[英]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.