猿问

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

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


df:


Date          Value

10/15/2020    75

10/14/2020    70

10/13/2020    65

10/12/2020    60

10/11/2020    55

10/10/2020    50

10/9/2020     45

10/8/2020     40

10/7/2020     35

10/6/2020     30

10/5/2020     25

10/4/2020     20

10/3/2020     15

10/2/2020     10

10/1/2020     5

期望的输出:


10/15/2020 到 10/9/2020 是 7 天,增量为:75 - 45 = 30 10/9/2020 时间戳为: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 更新为 Date


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

任何建议表示赞赏


慕无忌1623718
浏览 121回答 2
2回答

慕桂英546537

不要迭代数据框。您可以使用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  Value0 2020-10-09     301 2020-10-08     302 2020-10-07     303 2020-10-06     304 2020-10-05     305 2020-10-04     306 2020-10-03     307 2020-10-02     308 2020-10-01     30

慕码人8056858

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

相关分类

Python
我要回答