Pandas - 如果少于 N 则删除唯一行

我在 pandas 数据框中的专栏(城市)之一如下所示:


0           city1

1           city1

2           city2

3           city1

4           city5

5           city2

...

个别城市的出现:


city3         6758

city32        6400

city1         4500

city13        2440

...

我想删除出现次数少于 n 次的城市。


眼眸繁星
浏览 149回答 4
4回答

MYYA

我们可以做的transformN=10 newdf=df[df.groupby('city')['city'].transform('count')>N].copy()

30秒到达战场

根据你想要的,我会使用:import pandas as pdthreshold=7cities = ['city1' for _ in range(10)] + ['city2' for _ in range(5)]df = pd.DataFrame(cities, columns=['city'])df['freq'] = df.groupby('city')['city'].transform('count')df = df[df['freq']>threshold]保留原始df中的所有行df = pd.DataFrame(df['city'].value_counts())df = df[df['city']<threshold]每个城市名称只会给你一行。

拉莫斯之舞

将您的城市数据框与城市列上的城市计数数据框合并,在出现 >= 阈值上的位置应该可以为您提供所需的内容

肥皂起泡泡

我不完全了解您的数据框是如何组织的,但它应该很简单df[df['unique count'] < n]或df[df['unique count'] >= n](取决于你想要什么)您可能不得不使用这段代码的语法,只是因为我不完全理解您的数据框,但这应该可以满足您的需要。希望这可以帮助!!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python