首页 > 解决方案 > 基于最频繁值的子集

问题描述

假设我将以下数据集作为 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

但由于最频繁的值会改变,我不确定我的代码应该是什么。

您可以提供的任何帮助将不胜感激。谢谢你。

标签: pythonpandaspandas-groupby

解决方案


我们可以使用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

推荐阅读