如何解决根据值将一行复制到多行
我无法找出有关股票数据的问题。我们有一个包含高、低和日期数据的 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 中的数据:
解决方法
按照您的描述使用 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'])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。