pandas Dataframe中的mode()输出不舒服


问题内容

我有一个带有几列(功能)的数据框。

>>> print(df)

   col1  col2
a     1     1
b     2     2
c     3     3
d     3     2

我想计算其中之一的模式。这是发生了什么:

>>> print(df['col1'].mode())

0    3
dtype: int64

我只想输出值3。如果您认为以下非常相似的代码正在工作,则此行为非常奇怪:

>>> print(df['col1'].mean())

2.25

有两个问题:为什么会这样?当平均值出现平均值时,如何获得纯模式值?


问题答案:

因为Series.mode()可以返回多个值:

考虑以下DF:

In [77]: df
Out[77]:
   col1  col2
a     1     1
b     2     2
c     3     3
d     3     2
e     2     3

In [78]: df['col1'].mode()
Out[78]:
0    2
1    3
dtype: int64

从文档字符串:

如果至少2次没有任何反应,则将其清空。 即使只有一个值,也始终返回Series。

如果要选择第一个值:

In [83]: df['col1'].mode().iloc[0]
Out[83]: 2

In [84]: df['col1'].mode()[0]
Out[84]: 2