过滤 Pandas 数据框
Filter Pandas Data frame
我有这个 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
现在我想给低端相同的平均值。
过滤器找到 "variance" 大于 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
我有这个 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
现在我想给低端相同的平均值。 过滤器找到 "variance" 大于 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