【问题标题】:How to find the top 10 pairs that appear the most in a pandas dataframe in python如何在python的pandas数据框中找到出现最多的前10对
【发布时间】:2013-10-17 03:43:25
【问题描述】:

我在 python 中有一个带有“a”、“b”、“c”列的 pandas 数据框。 'a','b' 对是唯一的并且重复多次。 'c' 一直在变化。我想找到出现最多的 10 对 'a','b' 并将它们放入数据框中,但不知道如何。任何帮助表示赞赏。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我不完全确定我关注你,但假设你的意思是你有一个看起来像这样的 DataFrame

    >>> N = 1000
    >>> df = pd.DataFrame(np.random.randint(0, 10, (N, 3)), columns="A B C".split()) 
    >>> df.head()
       A  B  C
    0  7  4  5
    1  5  1  3
    2  8  9  8
    3  2  3  0
    4  2  3  0
    

    而您只想计算 (A, B) 对,这很简单:

    >>> df.groupby(["A", "B"]).size().order().iloc[-10:]
    A  B
    6  1    13
    1  0    14
    4  0    14
    7  2    14
    1  6    15
    8  2    15
    1  8    16
    2  6    16
    6  4    16
    7  4    16
    dtype: int64
    

    这可以分为四个部分:

    1. groupby,将数据按(A, B)元组分组
    2. size,计算每个组的大小
    3. order,返回按值排序的Series
    4. iloc,这让我们可以按位置选择Series 中的最后 10 个条目

    这会产生一个Series,但您可以通过将它传递给pd.DataFrame 来生成一个DataFrame

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 2021-11-06
      • 2021-07-21
      • 2023-03-31
      • 2019-10-03
      相关资源
      最近更新 更多