为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

眼眸繁星 2022-06-28 16:40:21
我在 pandas 数据框中的专栏(城市)之一如下所示:0           city11           city12           city23           city14           city55           city2...个别城市的出现:city3         6758city32        6400city1         4500city13        2440...我想删除出现次数少于 n 次的城市。
查看完整描述

4 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

我们可以做的transform

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


查看完整回答
反对 回复 2022-06-28
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

根据你想要的,我会使用:


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]

每个城市名称只会给你一行。


查看完整回答
反对 回复 2022-06-28
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

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



查看完整回答
反对 回复 2022-06-28
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

我不完全了解您的数据框是如何组织的,但它应该很简单

  • df[df['unique count'] < n]df[df['unique count'] >= n]
    (取决于你想要什么)

您可能不得不使用这段代码的语法,只是因为我不完全理解您的数据框,但这应该可以满足您的需要。

希望这可以帮助!!


查看完整回答
反对 回复 2022-06-28
  • 4 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号