我有一个 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
,删除列 c< 中具有小于
,结果是:n
相同值的所有行
c v
0 c1 5
1 c2 2
2 c1 7
3 c2 3
最佳答案
使用pd.Series.value_counts
随后通过 pd.Series.isin
进行 bool 索引:
counts = df['c'].value_counts() # create series of counts
idx = counts[counts < 2].index # filter for indices with < 2 counts
res = df[~df['c'].isin(idx)] # filter dataframe
print(res)
c v
0 c1 5
1 c2 2
2 c1 7
6 c2 3
关于python - 根据 pandas 中定义类别的列过滤掉观察数量不足的 DataFrame 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52273000/