根据值将一行复制到多行

问题描述

我无法找出有关股票数据的问题。我们有一个包含高、低和日期数据的 dataframe。我想制作两个新列,最大值来自 24_H,最小值来自 24_L 的整个星期(从一周中的几天开始的整个星期的最小值和最大值,并将其复制到该周的每一天/行)问题缺少某些日子(假期),因此您不能每 5 行使用一个循环。希望有意义我尝试在 excel 中的图片中解释它并在两周(38 和 39)内手动完成。

编辑: 代码的一部分。如何打印每周的高低值: df.groupby(['YEAR','WEEK']).agg({'24_H': 'max','24_L': 'min'}) 但仍然不知道如何将它们打印回一周中的每一天

EDIT2 部分数据(DoW 是星期几):

日期 DoW 24_H 24_L MONTH
12.09.2005 1 1170.0 1165.0 37 9 2005
13.09.2005 2 1166.0 1157.0 37 9 2005
14.09.2005 3 1162.0 1151.0 37 9 2005
15.09.2005 4 1158.0 1150.0 37 9 2005
16.09.2005 5 1164.0 1152.0 37 9 2005
19.09.2005 1 1162.0 1153.0 38 9 2005
20.09.2005 2 1162.0 1145.0 38 9 2005
21.09.2005 3 1149.0 1134.0 38 9 2005
22.09.2005 4 1142.0 1130.0 38 9 2005
23.09.2005 5 1144.0 1134.0 38 9 2005
26.09.2005 1 1148.0 1136.0 39 9 2005
27.09.2005 2 1145.0 1135.0 39 9 2005
28.09.2005 3 1146.0 1137.0 39 9 2005
29.09.2005 4 1154.0 1136.0 39 9 2005
30.09.2005 5 1155.0 1149.0 39 9 2005

excel 中的数据:

Image of data in excel

解决方法

按照您的描述使用 groupby(),然后进行内部联接 (pandas.merge()) 以将新的(分组的)DF 的数据复制回主数据。还可以使用 reset_index() 来创建 YEAR 和 WEEK 列而不是weekly_limits 中的索引:

weekly_limits = df.groupby(['YEAR','WEEK']).agg(
    {'24_H': 'max','24_L': 'min'}
).reset_index()
df_with_weekly_limits = pandas.merge(df,weekly_limits,on=['YEAR','WEEK'])

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...