0

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

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

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

日期 陶氏 24_H 24_L 星期
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年
2005 年 9 月 26 日 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年
2005 年 9 月 30 日 5 1155.0 1149.0 39 9 2005年

excel中的数据:

excel中的数据图像

4

1 回答 1

0

如您所描述的那样使用 groupby() ,然后进行内部连接(pandas.merge())将新的(分组的)DF的数据复制回主数据。还使用 reset_index() 来制作 YEAR 和 WEEK 列,而不是 week_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'])
于 2020-12-31T18:03:25.680 回答