我有一个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
对于列c
和n = 2
,请删除列n
中所有小于c
相同值的行,结果是:
c v
0 c1 5
1 c2 2
2 c1 7
3 c2 3
答案 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