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

Ber*_*art 6 python dataframe pandas

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

>>> print(df)

   col1  col2
a     1     1
b     2     2
c     3     3
d     3     2
Run Code Online (Sandbox Code Playgroud)

我想计算其中之一的模式。这是发生的事情:

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

0    3
dtype: int64
Run Code Online (Sandbox Code Playgroud)

我想简单地输出 value 3。这种行为很奇怪,如果您认为以下非常相似的代码正在运行:

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

2.25
Run Code Online (Sandbox Code Playgroud)

所以有两个问题:为什么会发生这种情况?我怎样才能获得纯模式值,因为它发生在平均值上?

Max*_*axU 5

因为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
Run Code Online (Sandbox Code Playgroud)

从文档字符串:

如果没有发生至少 2 次,则为空。 即使只有一个值,也始终返回系列。

如果要选择第一个值:

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

In [84]: df['col1'].mode()[0]
Out[84]: 2
Run Code Online (Sandbox Code Playgroud)