我有一个包含多个列(功能)的数据框。
>>> 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
所以有两个问题:为什么会这样?如何获得平均值的纯模式值?
答案 0 :(得分:3)
因为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
来自docstring:
如果没有任何事情发生至少2次,则为空。 始终返回系列 即使只有一个值。
如果您想选择第一个值:
In [83]: df['col1'].mode().iloc[0]
Out[83]: 2
In [84]: df['col1'].mode()[0]
Out[84]: 2