首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用30分钟数据获取前一周熊猫数据的高点和低点

问利用30分钟数据获取前一周熊猫数据的高点和低点
EN

Stack Overflow用户
提问于 2022-07-18 09:21:14
回答 2查看 178关注 0票数 0

我有几天时间,指数是基于周一至周五30分钟的数据。可能会有一些日期的遗漏(可能是因为假期)。但我想在过去的一周里,从高栏到低栏,找到最高值和最低值。就像我今天在计算,所以前一周的高低都被标记为黄色的附加图像。

尝试使用滚动,重采样,但有些如何不工作。有人能帮上忙吗

在这里输入图像描述

EN

回答 2

Stack Overflow用户

发布于 2022-07-19 08:19:55

您确实应该将示例数据添加到您的问题中(我指的是一段代码/文本,这些代码/文本可以很容易地用于创建数据,以说明建议的解决方案是如何工作的)。

这里有个建议。使用df,您的数据With和带有日期时间(而不是字符串)的列datatime:

代码语言:javascript
复制
df["week"] = (
    df["datetime"].dt.isocalendar().year.astype(str)
    + df["datetime"].dt.isocalendar().week.astype(str)
)
mask = df["high"] == df.groupby("week")["high"].transform("max")
df = df.merge(
    df[mask].rename(columns={"low": "high_low"})
            .groupby("week").agg({"high_low": "min"}).shift(),
    on="week", how="left"
).drop(columns="week")
  • 将week列添加到df (年份+周),以便按周分组。
  • 通过high提取具有每周最大mask s的行(可能有一个以上的行,为期一周)。
  • 构建一个对应的数据框架,其中包含对应于每周最大lows (列名为high_low)的每周最小值,并将其一次用于获取前一周的值,并将其.merge为df。

如果列datetime不包含日期时间:

代码语言:javascript
复制
df["datetime"] = pd.to_datetime(df["datetime"])
票数 1
EN

Stack Overflow用户

发布于 2022-07-18 10:41:40

如果我的理解是正确的,解决办法应该是

  1. 从日期开始获取周号。
  2. 按周数分组,取最大值和最小号。
  3. 群按周获取最大日期以获得最大/最后一周的日期
  4. 现在,根据日期键将所有数据合并为一个
  5. 步骤完成后,您可以根据需要执行任何格式设置。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73019980

复制
相关文章

相似问题

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