簡體   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