Python Pandas:基于多个条件计算滚动平均值

时间:2019-03-24 19:45:40

标签: python python-3.x pandas

我有一个数据框,显示最近一堆股票的收盘价。它具有日期时间索引,并且可以通过其名称/代码来识别股票。您能帮我弄清楚如何计算数据框中每只股票的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) enter image description here

1 个答案:

答案 0 :(得分:1)

<section class="main-content columns is-fullheight">
    <aside class="column is-2 is-narrow-mobile is-fullheight section is-hidden-mobile">
        <p class="menu-label is-hidden-touch">Header</p>
        <ul class="menu-list">
            <li>
                <a href="#go-first" class="is-active">CIT</a>
                <ul><li><a href="#">Items</a></li><li><a href="#">Items</a></li>
                </ul>
            </li>
            <li>
                <a href="#" class="is-active">Other</a>
                <ul>
                    <li><a href="#">other</a></li>
                </ul>
            </li>
        </ul>
    </aside>

    <div class="container column is-10">
        <div class="section">
            <div class="card">
                <div class="card-header" id="go-first">
                    <p class="card-header-title">CIT</p>
                </div>
                <div class="card-content">
                    <div class="content">
                        header
                    </div>
                    <div class="columns">
                        <div class="column">
                            ...
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</section>    
```
  • df = pd.DataFrame({'code': ['a']*10+['b']*10, 'Close': [1]*20}) df.groupby('code')['Close'].rolling(window=4).mean().reset_index() 分组并计算分组中的滚动平均值

注意:如果您的code都杂乱无章(如下所示),则您应该使用

code's

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