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

迭代数据帧以提取特定时间段的增量

迭代数据帧以提取特定时间段的增量

慕无忌1623718 2023-12-12 15:16:56
我有一个文件 df,我希望获取每 7 天时间段的增量并反映该特定时间段的时间戳df:Date          Value10/15/2020    7510/14/2020    7010/13/2020    6510/12/2020    6010/11/2020    5510/10/2020    5010/9/2020     4510/8/2020     4010/7/2020     3510/6/2020     3010/5/2020     2510/4/2020     2010/3/2020     1510/2/2020     1010/1/2020     5期望的输出:10/15/2020 到 10/9/2020 是 7 天,增量为:75 - 45 = 30 10/9/2020 时间戳为:30 等等Date          Value10/9/2020     3010/2/2020     30这就是我正在做的:df= df['Delta']=df.iloc[:,6].sub(df.iloc[:,0]),Date=pd.Series(pd.date_range(pd.Timestamp('2020-10- 15'), periods=7, freq='7d')))[['Delta','Date']]我也在想我也许可以做到这一点:编辑我将 callDate 更新为 Datefor row in df.itertuples():  Date = datetime.strptime(row.Date, "%m/%d/%y  %I:%M %p")  previousRecord = df['Date'].shift(-6).strptime(row.Date, "%m/%d/%y  %I:%M   %p")  Delta = Date - previousRecord任何建议表示赞赏
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

不要迭代数据框。您可以使用merge:


(df.merge(df.assign(Date=df['Date'] - pd.to_timedelta('6D')),

         on='Date')

   .assign(Value = lambda x: x['Value_y']-x['Value_x'])

   [['Date','Value']]

)

输出:


        Date  Value

0 2020-10-09     30

1 2020-10-08     30

2 2020-10-07     30

3 2020-10-06     30

4 2020-10-05     30

5 2020-10-04     30

6 2020-10-03     30

7 2020-10-02     30

8 2020-10-01     30


查看完整回答
反对 回复 2023-12-12
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

你写的最后一段代码就是我的做法。唯一的问题是Delta = Date - previousRecord,这里没有任何东西被调用Date。您应该访问与 关联的值callDate



查看完整回答
反对 回复 2023-12-12
  • 2 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信