【问题标题】:column calculation based on a value基于值的列计算
【发布时间】:2021-09-24 20:09:36
【问题描述】:

使用 yfinance 获取以下 df,如何计算“Day_Delta”列,从开始日的 Open_Value 开始,增量为 +/-%

symbol  Datetime                    Value_Type  Open_Value  Day_Delta
AAPL    2021-09-20 09:30:00-04:00   Close      143.839996    
AAPL    2021-09-20 10:00:00-04:00   Close      142.940002   
AAPL    2021-09-20 10:30:00-04:00   Close      142.750000            
AAPL    2021-09-20 11:00:00-04:00   Close      143.089905   
AAPL    2021-09-20 11:30:00-04:00   Close      142.490494   

【问题讨论】:

  • 你能用 Day_Delta 的预期值更新你的帖子吗?
  • 当然,您可以逐行进行。如果您在该日期没有看到此符号,请保存基准值。然后将新列设置为(Open_Value - base) * 100 / Open_Value
  • @TimRoberts:我如何创建一个“base”列来执行计算?
  • (df.Open_Value.pct_change() + 1).cumprod() * 100 - 100 ?我在上一条评论中错过了delta 部分。
  • 或@TimRoberts 解决方案,更快(df.Open_Value - df.Open_Value[0]) * 100 / df.Open_Value[0]

标签: python pandas yfinance


【解决方案1】:

解决方案:

  1. 将日期时间分成 2 列:日期和时间

     symbol  Date             Time       Open_Value
     AAPL    2021-09-20  09:30:00-04:00  143.800003
    
  2. 从“符号”和“日期”中排序并删除重复项

    stock_day_open = stock_data.sort_values(['symbol', 'Date', 'Time', 'Open_Value'], ascending[True, True, True, True])
    stock_day_open = stock_day_open.drop_duplicates(['symbol','Date'], keep='first')
    
  3. 合并到 new_df 以添加列

  4. 计算“Day_Delta”

【讨论】:

  • 您问题的主要部分(“计算 'Day_Delta' 列”)仍然含糊不清。
  • 好吧,这被您误解了。您不必将问题降级..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 2021-07-15
相关资源
最近更新 更多