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