根据行频率对pandas数据帧进行排序

时间:2015-02-20 02:48:34

标签: pandas

我有一个pandas数据帧df:

Name Score
AAAA    4
AAAA    7
AAAA   12
AAAA   13
BBBB    1
BBBB    1
CCCC    1
CCCC    2
CCCC   27

我想要一个新的数据帧,只有每个" Name"发生至少3次。即所需的输出是

Name Score
AAAA    4
AAAA    7
AAAA   12
AAAA   13
CCCC    1
CCCC    2
CCCC   27

我知道df.groupby [' Name']给出了每个名字的频率。  有关如何使用此信息获取所需输出的任何建议。感谢

2 个答案:

答案 0 :(得分:5)

使用groupbyfilter

df.groupby("Name").filter(lambda df:df.shape[0] > 2)

答案 1 :(得分:2)

可能有一种更优雅的方式,但这样可行。

import pandas as pd

df = pd.DataFrame({'Name': ['AAAA' ,'AAAA' ,'AAAA' ,'AAAA' ,'BBBB' ,'BBBB' ,'CCCC' ,'CCCC' ,'CCCC'],
    'Score': [4 ,7 ,12 ,13 ,1 ,1 ,1 ,2 ,27]})

Counts = pd.DataFrame(df['Name'].value_counts())
df[df['Name'].isin(list(Counts[Counts[0] >= 3].index))]