如何查找在熊猫数据框中出现最多的行项目
Posted
技术标签:
【中文标题】如何查找在熊猫数据框中出现最多的行项目【英文标题】:How to find which row items are appearing most in a pandas dataframe 【发布时间】:2018-07-16 08:08:19 【问题描述】:我有一个类似这样的数据框:
a b c d e f
------------------------
0 0 0 1 1 0 1
1 1 0 1 1 0 0
2 0 0 1 1 0 1
3 1 0 1 0 0 0
4 0 0 1 1 0 1
5 0 1 1 0 0 0
6 1 0 1 0 1 1
7 0 0 1 1 0 1
8 1 0 1 1 1 0
9 0 0 1 1 0 1
如何找到出现次数最多的行和唯一项计数?
这里0 0 1 1 0 1
出现在0,2,4,7,9
行中的次数最多。
我试过apriori algorithm
,但如果我的数据很大,它会给我100多个规则。
.NB:我的真实数据不是0
和1
。这是模拟数据。
【问题讨论】:
【参考方案1】:所有列使用groupby
size
,索引最大值添加idxmax
:
out = df.groupby(df.columns.tolist()).size().idxmax()
print (out)
(0, 0, 1, 1, 0, 1)
对于索引值GroupBy.transform
与max
值比较:
s = df.groupby(df.columns.tolist())[df.columns[0]].transform('size')
idx = s.index[s == s.max()]
print (idx)
Int64Index([0, 2, 4, 7, 9], dtype='int64')
【讨论】:
如何根据计数逐个显示所有模式? 它只返回前一个模式,如果想使用所有模式使用df = df.drop_duplicates()
有没有办法计算每个模式并像排名一样显示它的计数?
你觉得df.groupby(df.columns.tolist()).size().reset_index(name='count')
吗?
如果两个项目的数量相同怎么办?如何显示两者/全部以上是关于如何查找在熊猫数据框中出现最多的行项目的主要内容,如果未能解决你的问题,请参考以下文章