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行中相同的行。如果包含的次数少于该次数,我想删除它。
答案 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)