如果行数少于N,则Pandas会删除唯一行

2024-09-28 22:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在pandas dataframe中的一个列(city)如下所示:

0           city1
1           city1
2           city2
3           city1
4           city5
5           city2
...

个别城市发生情况:

city3         6758
city32        6400
city1         4500
city13        2440
...

我想删除发生次数少于n次的城市


Tags: citydataframepandas情况次数city1city2city3
3条回答

我们可以做transform

N=10
newdf=df[df.groupby('city')['city'].transform('count')>N].copy()

根据你想要什么,我会使用:

import pandas as pd
threshold=7
cities = ['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]

每个城市的名字只能给你一行

将城市数据框与城市列上的城市计数数据框合并,loc on occurrences>;=门槛应该给你你想要的

相关问题 更多 >