【问题标题】:How to compare open and close price variables in this dataframe?如何比较此数据框中的开盘价和收盘价变量?
【发布时间】:2021-01-07 17:08:21
【问题描述】:

我有一个数据框,其中包含超过 5 年的每分钟的开盘价、最高价、最低价、收盘价和日期。我想计算一个新列,并想比较(收盘 - 开盘)收盘价(那一分钟)与当天(上午 9 点 15 分)的开盘价。我该怎么做?

下面是文件的截图。在J 栏我有当天的开盘价,K 栏是运行收盘价。我想计算关闭和打开之间的差异。该文件有 70 万行,超过 1000 天,这意味着开盘价将变化 1000 倍。

我有 200 个类似的文件,我需要在其中执行相同的过程,因此循环不是所需的解决方案。

【问题讨论】:

    标签: pandas


    【解决方案1】:

    只需使用groupbytransform。请注意,这假设您的数据已排序(例如,每组的第一个值是开盘价)。

    import pandas as pd
    import datetime
    
    # sample date
    df1 = pd.DataFrame({'ticker': ['A']*5,
                        'date': pd.date_range('2020-01-01', '2020-01-01', periods=5),
                        'time': [datetime.time(9, 15), datetime.time(9, 16), datetime.time(9, 17),
                                 datetime.time(9, 18), datetime.time(9, 19)],
                        'open': [1,2,3,4,5],
                        'close': [2,3,4,3,2]})
    
    df2 = pd.DataFrame({'ticker': ['A']*5,
                        'date': pd.date_range('2020-01-02', '2020-01-02', periods=5),
                        'time': [datetime.time(9, 15), datetime.time(9, 16), datetime.time(9, 17),
                                 datetime.time(9, 18), datetime.time(9, 19)],
                        'open': [3,2,3,4,5],
                        'close': [2,3,4,3,2]})
    
    df = df1.append(df2)
    
    
    # groupby the ticker and date then use transform to get the first value
    # subtract the close from the first value of each group
    df['diff'] = df['close'] - df.groupby(['ticker', 'date'])['open'].transform('first')
    
      ticker       date      time  open  close  diff
    0      A 2020-01-01  09:15:00     1      2     1
    1      A 2020-01-01  09:16:00     2      3     2
    2      A 2020-01-01  09:17:00     3      4     3
    3      A 2020-01-01  09:18:00     4      3     2
    4      A 2020-01-01  09:19:00     5      2     1
    0      A 2020-01-02  09:15:00     3      2    -1
    1      A 2020-01-02  09:16:00     2      3     0
    2      A 2020-01-02  09:17:00     3      4     1
    3      A 2020-01-02  09:18:00     4      3     0
    4      A 2020-01-02  09:19:00     5      2    -1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-08
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多