我想筛选我的df
,只筛选那些在列A
中出现频率低于某个阈值的值的行。我目前正在使用两个value_counts()
的技巧。解释我的意思:
df = pd.DataFrame([[1, 2, 3], [1, 4, 5], [6, 7, 8]], columns=['A', 'B', 'C'])
'''
A B C
0 1 2 3
1 1 4 5
2 6 7 8
'''
我想删除A
列中的值在A
列中出现< 2
次的任何行。我现在做的是:
df = df[df['A'].isin(df.A.value_counts()[df.A.value_counts() >= 2].index)]
Pandas有没有比两次调用value_counts()
更干净的方法来做到这一点?
按组大小筛选可能最简单,其中组在列A上完成。
df.groupby('A').filter(lambda x: len(x) >=2)