首页 > 解决方案 > pd.dataframe:将 df 子集为特定列中的最小特征量?

问题描述

我尝试在 pandas 中创建一个数据透视表,如果特征具有最小数量,它应该只在分组列中显示特征。例如:当我在 Level_1 列中对特征进行分组时,它应该只包括在“Level_2”列中至少出现 3 次的特征,所以我没有任何只有 1 或 2 次出现的分组特征。我想将此 df 用于绘图旭日形图,如此小的数字使图表无法阅读。

我创建了以下代码行,它似乎只创建了一个布尔掩码,而不是我正在寻找的缩减数据框。

df_new = df.groupby('Level_1').agg({'Level_2': 'count'}) > 2

生成一个充满 NaN 的无用 df 是:

df_new = df[df.groupby('Level_1').agg({'Level_2': 'count'}) > 2]

过滤 df 以仅保留每个至少 3 个数量的 Level_1 特征需要什么?

谢谢!

标签: pythonpandasdataframe

解决方案


试试这个。将来,请附上一个示例 df,以及您尝试访问的结果 df。

df_new = df.loc[df.groupby('Level_1')['Level_2'].transform('count').gt(2)]

推荐阅读