根据定义熊猫类别的列,筛选出观察次数不足的DataFrame行

时间:2018-09-11 09:37:22

标签: python pandas dataframe filtering counter

我有一个DataFrame,其中有一列将数据集划分为一组类别。我想删除那些观察较少的类别。

示例

df = pd.DataFrame({'c': ['c1', 'c2', 'c1', 'c3', 'c4', 'c5', 'c2'], 'v': [5, 2, 7, 1, 2, 8, 3]})

    c  v
0  c1  5
1  c2  2
2  c1  7
3  c3  1
4  c4  2
5  c5  8
6  c2  3

对于列cn = 2,请删除列n中所有小于c相同值的行,结果是:

    c  v
0  c1  5
1  c2  2
2  c1  7
3  c2  3

1 个答案:

答案 0 :(得分:1)

通过使用groupby可以通过以下方式实现:

mask = df.groupby('c').count().reset_index()
mask = mask.loc[mask['v'] < 2]
res = df[~df.c.isin(mask.c.values)]
print(res)

输出:

    c  v
0  c1  5
1  c2  2
2  c1  7
6  c2  3