【发布时间】:2019-12-06 23:20:45
【问题描述】:
我想识别数据框中每组值的异常值,并返回一个数据框,其中包含数据框每一行的 True/False 列。
data = {'Group':['A', 'A', 'A', 'B', 'B', 'B'], 'Age':[20, 21, 19, 18, 2, 17]}
df = pd.DataFrame(data)
def flag_outlier(x):
lower_limit = np.mean(x) - np.std(x) * 3
upper_limit = np.mean(x) + np.std(x) * 3
for i in x:
if i > upper_limit or i < lower_limit:
return True
df['Flag'] = df.groupby('Group')['Age'].apply(flag_outlier)
这段代码返回一个带有NaN的列,这个函数如何修复?
这篇文章 apply a function to a groupby function 类似,但我想不通。
非常感谢,
【问题讨论】:
标签: python pandas apply pandas-groupby