我想将数据分组DataFrame
,将每组中的异常值过滤掉(例如分位数(0.95)),然后汇总每组的结果。
我试图这样做:
import pandas as pd
import numpy as np
dff = pd.DataFrame({"A": np.arange(8), "B": list("aabbbbcc")})
group = dff.groupby(["B"])
print(group.mean())
group1 = group.apply(lambda g: g[g["A"] < g["A"].quantile(0.95)])
print("-------")
print(group1.mean())
然而,这似乎并没有做正确的事,因为group1
对象其实不是DataFrameGroupBy
因为是group
对象。我找不到任何返回过滤DataFrameGroupBy
对象的函数
这可以通过再次在“ B”上分组来完成。请注意,要执行此操作,将需要重置索引(drop = True
以避免重复数据帧中的“ B”),否则该groupby
函数将产生错误,指出“ B”既是索引级别又是列标签。尝试替换group1.mean()
为:
group1.reset_index(drop=True).groupby("B").mean()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句