繁体   English   中英

如何在 Pandas 中的 DataFrame 中迭代行和索引以过滤布尔值

[英]How to iterate over rows and index in a DataFrame in Pandas to filter bolean values

我正在一个项目中工作,以通过一些股票市场行情来发现异常情况,钓鱼异常交易量......我正在努力过滤真实值(那些通过“过滤器”)。 主要目标是创建一个数据框,其中包含通过“统计过滤器”传递的代码。

import numpy as np
import pandas  as pd
from pandas_datareader import data as web

获取数据框

tickers = ['F', 'GE', 'GM','TSLA']
data = pd.DataFrame()
for t in tickers:
data[t] = web.DataReader(t, data_source='yahoo', start='2020-1-1')['Volume']

统计过滤器

data_std = data.std()
data_mean = data.mean()
anomaly_cut_off = data_std * 3
upper_limit = data_mean + anomaly_cut_off

具有 boolean 值的数据框(真或假)

outlier = data > upper_limit

异常应该是带有日期(索引)和股票代码('F','GE','GM','TSLA')的数据框,只要是真的......如果我将pd更改为np,下面的代码就可以工作.array(data),但只有一个代码。

anomalies = []

for outlier in data:
  if outlier > upper_limit:
  anomalies.append(outlier)
return anomalies

如果您想返回至少一个您的代码为True的行,则此方法有效:

outlier[outlier.any(axis=1)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM