【问题标题】:Python pandas: calculate rolling mean based on multiple criteriaPython pandas:根据多个标准计算滚动平均值
【发布时间】:2019-08-15 02:34:44
【问题描述】:

我有一个数据框,显示了过去 10 天一组股票的收盘价。它有一个日期时间指数和股票可以通过他们的名字/代码来识别。你能帮我弄清楚如何计算数据框中每只股票的 4 天移动平均线吗?

我尝试使用 pd.DataFrame.rolling().mean() 方法,但它只是给出了整个数据集的滚动平均值。不知道下一步该去哪里......

sampleData = hundredDayData['2019-03-11':'2019-03-20'] sampleData['Close: 4 day mean'] = sampleData['Close'].rolling(window=4).mean() sampleData.head(24)

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:
    df = pd.DataFrame({'code': ['a']*10+['b']*10, 'Close': [1]*20})
    df.groupby('code')['Close'].rolling(window=4).mean().reset_index()
    
    • code 分组并计算组内的滚动平均值

    注意:如果你的code's都是乱码(如下图),那么你应该使用

    df = pd.DataFrame({'code': ['a']*10+['b']*10+['a']*10, 'Close': [1]*30})
    rolling = df.groupby('code')['Close'].rolling(window=4).mean().reset_index().set_index('level_1').rename(
        columns={'Close':'rolling'})[['rolling']]
    df.merge(rolling, left_index=True, right_index=True)
    

    在组级别计算滚动平均值,但使用索引将其作为新列合并回主数据框。

    【讨论】:

      猜你喜欢
      • 2023-02-08
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 2013-05-07
      相关资源
      最近更新 更多