python - 基于最频繁值的子集
问题描述
假设我将以下数据集作为 CSV 文件。
我希望我的输出是一个 CSV 文件,它是该数据的子集,仅基于与 B 列中最常见值关联的数据。
在下面的示例数据中,B 列中最常见的值是“1”,但是这会改变,所以我需要我的代码不要那么具体。
A B
! 1
@ 1
# 1
$ 1
% 2
^ 3
& 2
* 4
( 5
) 2
In this example, I want my output to be a CSV file of:
A B
! 1
@ 1
# 1
$ 1
但由于最频繁的值会改变,我不确定我的代码应该是什么。
您可以提供的任何帮助将不胜感激。谢谢你。
解决方案
我们可以使用mode
返回最常出现的值,然后对该值进行过滤:
df[df['B']==df['B'].mode()[0]]
输出:
A B
0 ! 1
1 @ 1
2 # 1
3 $ 1
并且value_counts
可以用于第 N 个最频繁的值(从 N=0 开始是最频繁的):
df[df['B']==df['B'].value_counts().index[N]]
例如对于 N=1:
df[df['B']==df['B'].value_counts().index[1]]
输出:
A B
4 % 2
6 & 2
9 ) 2
推荐阅读
- python - 根据支付计划限制 django rest framework api
- java - 插入优先队列
- antlr - 这个 ANTLR 语法有什么问题?
- node.js - 节点js url映射
- r - 转换多列类
- java - 为什么这个线程代码不能在 GUI 上正常工作?[Java Swing] [线程]
- arrays - 使用 jq 替换字典中的数组值
- c# - XSL-FO 文档:在具体的 fo:table-row 中插入 break-before="page" 属性
- python-3.x - 双击不在 html 中的可视元素使 textarea 出现 selenium
- javascript - XHR 加载失败:GET Works 有时我不知道为什么