Pandas 是否有我当前使用的这种语法的替代方案?



我想筛选我的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)

相关内容

  • 没有找到相关文章