作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Pandas 数据框,其中包含如下所示的数据
import pandas as pd
data = [['0','2018-03-01','2020-04-11'],['1','2017-11-17','2020-11-16'],['2','2017-07-12','2020-07-12']]
df = pd.DataFrame(data,columns=['account_number','contract_start_date','contract_end_date'])
df
new_df= pd.concat([pd.DataFrame({'start_date': pd.date_range(row.contract_start_date, row.contract_end_date, freq ='365D'),
'account_number': row.account_number
}) for row in df.itertuples()], ignore_index=True)
new_df
最佳答案
有闰年,所以产量不同。
想法由 Series.duplicated
映射到最后一个值新品account_number
原作者 contract_end_date
并为另一个值添加 365 days
:
s1 = pd.to_datetime(df.set_index('account_number')['contract_end_date'])
s2 = new_df['account_number'].map(s1)
s3 = new_df['start_date'] + pd.Timedelta(365, 'd')
mask = new_df['account_number'].duplicated(keep='last')
new_df['contract_end_date'] = np.where(mask, s3, s2)
new_df['days'] = new_df['contract_end_date'] - new_df['start_date']
print (new_df)
start_date account_number contract_end_date days
0 2018-03-01 0 2019-03-01 365 days
1 2019-03-01 0 2020-02-29 365 days
2 2020-02-29 0 2020-04-11 42 days
3 2017-11-17 1 2018-11-17 365 days
4 2018-11-17 1 2019-11-17 365 days
5 2019-11-17 1 2020-11-16 365 days
6 2020-11-16 1 2020-11-16 0 days
7 2017-07-12 2 2018-07-12 365 days
8 2018-07-12 2 2019-07-12 365 days
9 2019-07-12 2 2020-07-11 365 days
10 2020-07-11 2 2020-07-12 1 days
关于python - 如何在python pandas数据框中将日期范围划分为365天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63682529/
我是一名优秀的程序员,十分优秀!