Pandas Dataframe 中MODE()的令人不快的输出

kse8i1jr  于 2022-09-21  发布在  其他
关注(0)|答案(3)|浏览(209)

我有一个包含几列的 Dataframe (功能)。

>>> 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

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

5lhxktic

5lhxktic1#

因为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
9nvpjoqh

9nvpjoqh2#

我同意这太麻烦了

Df[‘col1’].mode().iloc[0].values[0]

fdbelqdn

fdbelqdn3#

MODE()将返回与最频繁的值相关的所有值。为了支持该功能,它必须返回一个集合,该集合采用dataFrame或Series的形式。例如,如果您有一个序列[2,2,3,3,5,5,6],则最频繁的值出现两次。结果将是序列[2,3,5],因为每个序列都出现两次。如果希望将其压缩为单个值,可以访问第一个值,计算max()、min()或对应用程序最有意义的任何值。

相关问题