【问题标题】:Copy a row to multiple rows based on value根据值将一行复制到多行
【发布时间】:2020-12-30 16:23:09
【问题描述】:

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

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

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

DATE DoW 24_H 24_L WEEK MONTH YEAR
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中的数据:

【问题讨论】:

  • 请粘贴数据,不要粘贴图片。谢谢。
  • 对于给定的一周,您可以用缺失值做很多事情。您可以忽略它们,将它们替换为该周值的平均值、中位数等

标签: python dataframe loops stock ohlc


【解决方案1】:

按照您的描述使用 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'])

【讨论】:

  • 莎拉,你是最棒的,谢谢!祝您新年快乐,万事如意!
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2020-04-13
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多