使用熊猫返回字符串列表

时间:2018-10-13 14:52:23

标签: python pandas

我的函数根据两个条件过滤和返回两个熊猫系列的标签。尽管我的代码有效,但输出是“ pandas.core.indexes.base.Index”类,而不是根据需要的“ set”类。

我的代码如下:

def find_outliers(ks_values, p_values, ks_threshold, pvalue_threshold=0.05):

"""
Find outlying symbols using KS values and P-values

Parameters
----------
ks_values : Pandas Series
    KS static for all the tickers
p_values : Pandas Series
    P value for all the tickers
ks_threshold : float
    The threshold for the KS statistic
pvalue_threshold : float
    The threshold for the p-value

Returns
-------
outliers : set of str
    Symbols that are outliers
"""
# Function Implementation


Symbols_ks = pd.Series(index=ks_values.index)
Symbols_pval = pd.Series(index=p_values.index)

Symbols_ks = list(ks_values[ks_values> ks_threshold].index.values)
Symbols_pval = list(p_values[p_values< pvalue_threshold].index.values)

outliers = set(Symbols_ks.extend(Symbols_pval)) 

return outliers

Series1和Series2包含具有以下形式的相应值的标签:

ADBE    0.24268
ADI     0.19429
ADM     0.18128
ADP     0.17243
ADS     0.24109
ADSK    0.14591
AEE     0.18874

我的目标是返回一个以超过(或不超过)两个阈值为条件的标签列表。输出必须是一组字符串。

很抱歉,有人会觉得我的查询很简单。非常感谢。

2 个答案:

答案 0 :(得分:0)

这就是我正在跑步的

def find_outliers(ks_values, p_values, ks_threshold, pvalue_threshold=0.05):
    Symbols_ks = pd.Series(index=ks_values.index)
    Symbols_pval = pd.Series(index=p_values.index)

    Symbols_ks = list(ks_values[ks_values> ks_threshold].index.values)
    Symbols_pval = list(p_values[p_values< pvalue_threshold].index.values)

    Symbols_ks.extend(Symbols_pval)

    return set(Symbols_ks)

测试(使用评论中的示例数据)

find_outliers(a,b,0.5)

输出:

{IBID}

答案 1 :(得分:0)

我使用的计算方式略有不同

r = (ks_values > ks_threshold).combine(p_values < pvalue_threshold, lambda x,y: x & y)
s = set(r[r == True].index.values)