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

Python 迭代数据帧以提取特定时间段的增量,python,pandas,numpy,loops,Python,Pandas,Numpy,Loops,我有一个文件df,我希望取每7天周期的增量,并反映该特定周期的时间戳 df: 所需输出: 2020年10月15日至2020年10月9日为7天,三角洲为:75-45=30 2020年10月9日的时间戳是:30,以此类推 Date Value 10/9/2020 30 10/2/2020 30 这就是我正在做的: df= df['Delta']=df.iloc[:,6].sub(df.iloc[:,0]),Date=pd.Series (pd.date_rang

我有一个文件df,我希望取每7天周期的增量,并反映该特定周期的时间戳

df:

所需输出:

2020年10月15日至2020年10月9日为7天,三角洲为:75-45=30 2020年10月9日的时间戳是:30,以此类推

Date          Value

10/9/2020     30
10/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更新为最新

for 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

如果您有任何建议,我将不胜感激。

您编写的最后一段代码就是我的方式。唯一的问题是
Delta=Date-previousRecord
,这里没有所谓的
Date
。相反,您应该访问与
callDate

相关联的值,不要遍历数据帧。您可以使用
合并

(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

你好,我将改为callDate to Date。谢谢让我试试这个好的谢谢你@Quang Hoang,我会试试这个。你能告诉我这是每7天的增量吗?这就是我最终希望发生的事情:
pd.to_timedelta('6D')
符合您的期望
10-15-2020
符合
10-09-2020
。是的,
10-08-2020
上的
Value
是从
10-14-2020
上的
Value
中减去的,所以主要原因是迭代没有矢量化,而
merge
是。您需要在datetime类型中使用
Date
。在该命令之前执行
df['Date']=pd.to_datetime(df['Date'])
        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