如何仅保留行中经常出现某列值的行

时间:2019-05-23 14:01:44

标签: python pandas

a=df.groupby('value').size()
newFrame = pd.DataFrame()

for el in a.keys():
    if a[el] > 300000:
        newFrame = pd.concat([newFrame, df[df.value == el]])

我已经编写了这段代码,该代码可以实现我想要的功能,但是速度很慢。我只想保留“值”项与其他300000行中相同的行。如果包含的次数少于该次数,我想删除它。

2 个答案:

答案 0 :(得分:1)

GroupBy.transform用于具有与原始大小相同的系列,其原始大小由GroupBy.size填充,并由boolean indexing过滤:

df = df[df.groupby('value')['value'].transform('size') > 300000]

如果稍后处理输出:

df = df[df.groupby('value')['value'].transform('size') > 300000].copy()

答案 1 :(得分:1)

只需value_counts

df=df.drop(df.value.value_counts().loc[lambda x : x<=300000].index)