首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >迭代数据以提取特定时间段的增量。

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

Stack Overflow用户
提问于 2020-10-21 18:18:24
回答 2查看 119关注 0票数 1

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

df:

代码语言:javascript
运行
复制
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

期望输出:

2020年10/15/2020至10/9/2020为7天,三角洲为: 75 - 45 = 30 10/9/2020

代码语言:javascript
运行
复制
Date          Value

10/9/2020     30
10/2/2020     30

这就是我要做的:

代码语言:javascript
运行
复制
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']]

我也在想,我也许能做到这一点:

编辑i更新了callDate

代码语言:javascript
运行
复制
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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-21 18:38:13

不要对数据进行迭代。您可以使用merge

代码语言:javascript
运行
复制
(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']]
)

输出:

代码语言:javascript
运行
复制
        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
票数 2
EN

Stack Overflow用户

发布于 2020-10-21 18:29:58

你写的最后一段代码是我会怎么做的。唯一的问题是在Delta = Date - previousRecord中,这里没有什么叫做Date。相反,您应该访问与callDate关联的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64469468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档