我有一个包含几列的 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
那么有两个问题:为什么会发生这种情况?我如何才能获得纯模式值,因为它发生在平均值?
3条答案
按热度按时间5lhxktic1#
因为Series.mode()可以返回多个值:
请考虑以下DF:
发件人文档字符串:
如果至少2次未出现任何事件,则为空。即使只有一个值,也始终返回Series。
如果要选择第一个值:
9nvpjoqh2#
我同意这太麻烦了
Df[‘col1’].mode().iloc[0].values[0]
fdbelqdn3#
MODE()将返回与最频繁的值相关的所有值。为了支持该功能,它必须返回一个集合,该集合采用dataFrame或Series的形式。例如,如果您有一个序列[2,2,3,3,5,5,6],则最频繁的值出现两次。结果将是序列[2,3,5],因为每个序列都出现两次。如果希望将其压缩为单个值,可以访问第一个值,计算max()、min()或对应用程序最有意义的任何值。