首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取一列中最常用的数值?

如何获取一列中最常用的数值?
EN

Stack Overflow用户
提问于 2013-02-28 23:11:19
回答 6查看 103.9K关注 0票数 56

我有一个数据框,我想知道给定列出现频率最高的次数。

我试着用下面的方法来做:

代码语言:javascript
复制
items_counts = df['item'].value_counts()
max_item = items_counts.max()

结果,我得到了:

代码语言:javascript
复制
ValueError: cannot convert float NaN to integer

据我所知,在第一行中,我得到了一列中的值被用作键,这些值的频率被用作值的序列。因此,我只需要找到级数中的最大值,但由于某些原因,它不起作用。有人知道如何解决这个问题吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-02-28 23:43:31

看起来您的列中可能有一些空值。您可以使用df = df.dropna(subset=['item'])删除它们。然后,df['item'].value_counts().max()应该给你最大计数,df['item'].value_counts().idxmax()应该给你最频繁的值。

票数 74
EN

Stack Overflow用户

发布于 2017-05-11 13:05:00

要继续@jonathanrocher回答,你可以在pandas DataFrame中使用mode。它将给出行或列中最频繁的值(一个或两个):

代码语言:javascript
复制
import pandas as pd
import numpy as np
df = pd.DataFrame({"a": [1,2,2,4,2], "b": [np.nan, np.nan, np.nan, 3, 3]})

In [2]: df.mode()
Out[2]: 
   a    b
0  2  3.0
票数 19
EN

Stack Overflow用户

发布于 2015-05-06 06:00:50

您还可以考虑使用忽略NaN的scipy的mode函数。使用它的解决方案可能如下所示:

代码语言:javascript
复制
from scipy.stats import mode
from numpy import nan
df = DataFrame({"a": [1,2,2,4,2], "b": [nan, nan, nan, 3, 3]})
print mode(df)

输出将如下所示

代码语言:javascript
复制
(array([[ 2.,  3.]]), array([[ 3.,  2.]]))

这意味着最常见的值是第一列的2和第二列的3,频率分别为32

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15138973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档