【问题标题】:How to iterate over rows and index in a DataFrame in Pandas to filter bolean values如何在 Pandas 中遍历 DataFrame 中的行和索引以过滤布尔值
【发布时间】:2021-04-24 02:51:59
【问题描述】:

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

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

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

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 的行,还是别的什么?
  • 是 True 的行,但我需要作为行索引的日期 + 作为列的代码。类似于 Ticker X - 日期 2020-01-03

标签: python pandas dataframe yahoo-finance outliers


【解决方案1】:

如果您想返回至少一个您的代码为True 的行,这可行:

outlier[outlier.any(axis=1)]

【讨论】:

    猜你喜欢
    • 2020-03-15
    • 2022-10-25
    • 2012-05-30
    相关资源
    最近更新 更多