我的函数根据两个条件过滤和返回两个熊猫系列的标签。尽管我的代码有效,但输出是“ 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
我的目标是返回一个以超过(或不超过)两个阈值为条件的标签列表。输出必须是一组字符串。
很抱歉,有人会觉得我的查询很简单。非常感谢。
答案 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)