过滤 Pandas 数据框

2024-01-19

我有这个熊猫数据框:

                     open    high     low   close      volume
TimeStamp                                                      
2016-06-23 10:00:00  586.76  594.00  585.54  589.94  478.176973
2016-06-23 11:00:00  589.94  595.49  588.23  592.63  448.689485
2016-06-23 12:00:00  592.63  592.63    1.50  581.13  527.816891
2016-06-23 13:00:00  581.13  586.33  578.58  580.96  728.424757

正如您所看到的,其中一个值不正确。 所以我想过滤它并将其更改为最后 5 个值的平均值

有了这个

df['avg']=df['low'].rolling(5).mean().shift()

我明白了

                      open    high     low   close      volume      avg
TimeStamp                                                               
2016-06-23 10:00:00  586.76  594.00  585.54  589.94  478.176973  573.326
2016-06-23 11:00:00  589.94  595.49  588.23  592.63  448.689485  578.438
2016-06-23 12:00:00  592.63  592.63    1.50  581.13  527.816891  583.202
2016-06-23 13:00:00  581.13  586.33  578.58  580.96  728.424757  467.348

现在我想给低的 avg 相同的值。 过滤器找到“方差”大于 5 的值。

df.loc[(df['high']/df['low'])>5]['low']


                       open    high  low   close      volume      avg
TimeStamp                                                            
2016-06-23 12:00:00  592.63  592.63  1.5  581.13  527.816891  583.202

但是当我尝试给出该​​值时,它不起作用..

 df.loc[(df['high']/df['low'])>5]['low']=df.loc[(df['high']/df['low'])>5]['avg']

你能帮助我吗?


pandas 的数据框是基于索引的,所以你需要的只是

df.loc[(df['high']/df['low'])>5,'low']=df.avg
df
Out[1331]: 
     open    high     low   close      volume     avg
0  586.76  594.00  585.54  589.94  478.176973     NaN
1  589.94  595.49  588.23  592.63  448.689485  585.54
2  592.63  592.63  588.23  581.13  527.816891  588.23
3  581.13  586.33  578.58  580.96  728.424757    1.50
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

过滤 Pandas 数据框 的相关文章

随机推荐