gpt4 book ai didi

python - 过滤 Pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-04 02:35:39 32 4
gpt4 key购买 nike

我有这个 Pandas 数据框:

                     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

现在我想给 low 相同的 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 的dataframe 是基于索引的,所以你需要的只是

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

关于python - 过滤 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47982568/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com