为了账号安全,请及时绑定邮箱和手机立即绑定

从连续两行获取数学值

从连续两行获取数学值

jeck猫 2021-07-14 13:10:00
这是我拥有的数据框import pandas as pdimport datetimedata = [['A1','String01',45,datetime.date(2018,1,1),datetime.date(2018,3,1)],['A1','String02',46,datetime.date(2018,3,1),datetime.date(2018,4,29)],['A1','String03',48,datetime.date(2018,4,29),datetime.date(2018,6,30)],['A1','String04',51,datetime.date(2018,6,30),datetime.date(2018,12,31)],['A2','String11',32,datetime.date(2018,1,1),datetime.date(2018,6,1)],['A2','String12',33,datetime.date(2018,6,1),datetime.date(2018,7,30)],['A2','String13',54,datetime.date(2018,8,11),datetime.date(2018,12,31)],['A3','String21',45,datetime.date(2018,1,1),datetime.date(2018,6,1)],['A3','String22',47,datetime.date(2018,7,1),datetime.date(2018,12,31)],]cols = ['ID','SomeValue','Price','StartDate','EndDate']df = pd.DataFrame(data,columns=cols)print(df)如果我们打印数据框,我们可以看到从 7/31 到 8/11(查看开始日期和结束日期),ID=A2 的价格缺失。我们有类似的情况,ID=A3我想要做什么,找出按 ID 分组的 StartDate - EndDate(前几列)。我的输出应该是这样的: ID SomeValue  Price   StartDate     EndDate  NoOfDaysMissing0  A1  String01     45  2018-01-01  2018-03-01              NaN1  A1  String02     46  2018-03-01  2018-04-29              0.02  A1  String03     48  2018-04-29  2018-06-30              0.03  A1  String04     51  2018-06-30  2018-12-31              0.04  A2  String11     32  2018-01-01  2018-06-01              NaN5  A2  String12     33  2018-06-01  2018-07-30              0.06  A2  String13     54  2018-08-11  2018-12-31             12.07  A3  String21     45  2018-01-01  2018-06-01              NaN8  A3  String22     47  2018-07-01  2018-12-31             30.0其中缺少的 NoOfDays 由每个 ID 的 StartDate - EndDate(前一行)计算(按每个 ID 分组)
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号