【问题标题】: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:我的真实数据不是01。这是模拟数据。

【问题讨论】:

    标签: python pandas dataframe apriori


    【解决方案1】:

    所有列使用groupbysize,索引最大值添加idxmax

    out = df.groupby(df.columns.tolist()).size().idxmax()
    print (out)
    (0, 0, 1, 1, 0, 1)
    

    对于索引值GroupBy.transformmax 值比较:

    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') 吗?
    • 如果两个项目的数量相同怎么办?如何显示两者/全部
    猜你喜欢
    • 1970-01-01
    • 2020-12-03
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 2021-07-01
    • 1970-01-01
    • 2022-07-22
    相关资源
    最近更新 更多