我在过滤 pandas
数据帧时遇到问题。
city
NYC
NYC
NYC
NYC
SYD
SYD
SEL
SEL
...
df.city.value_counts()
我想 删除计数频率少于 4 的城市行, 例如 SYD 和 SEL。
如果不手动逐个城市删除它们,这样做的方法是什么?
原文由 Devin Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是使用 pd.Series.value_counts
的一种方式。
counts = df['city'].value_counts()
res = df[~df['city'].isin(counts[counts < 5].index)]
counts
是一个 pd.Series
对象。 counts < 5
返回布尔系列。我们通过布尔值 counts < 5
系列过滤计数系列(这就是方括号实现的目的)。然后,我们使用结果系列的索引来查找计数 < 5 的城市。 ~
是否定运算符。
请记住,系列是索引和值之间的映射。系列的索引不一定包含唯一值,但这可以通过 value_counts
的输出来保证。
原文由 jpp 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答895 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
给你过滤器
方案二
transform