基于最频繁值的子集

时间:2019-03-08 21:44:36

标签: python pandas pandas-groupby

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

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

您能提供的任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:4)

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