【问题标题】:Finding the most frequent combination in DataFrame在 DataFrame 中查找最频繁的组合
【发布时间】:2020-11-23 12:11:57
【问题描述】:

我有一个包含两列 FromTo 的 DataFrame,我需要知道最常见的位置组合 FromTo

例子:

From        To
------------------
Home        Office
Home        Office
Home        Office
Airport     Home
Restaurant  Office

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    如果顺序确实重要:

    df['FROM_TO'] = df['FROM'] + df['TO']
    
    df['COUNT'] = 1
    
    df.groupby(['FROM_TO'])['COUNT'].sum()
    

    一次性为您提供所有事件。只需取最大值即可找到最大的出现次数。

    如果顺序确实重要,请先对之前的值进行排序:

    df.loc[:,:] = np.sort(df.values,axis=1) # 如果 df 只包含 FROM 和 TO 列。

    【讨论】:

    • 感谢@Eddy,感谢您的回复。
    【解决方案2】:

    您可以将两列组合在一起并计算每对出现的次数,然后按此计数对这些对进行排序。

    下面的代码完成了这项工作:

    df.groupby(["From", "To"]).size().sort_values(ascending=False)
    

    并且,对于问题的示例,它返回:

    From        To
    -----------------------
    Home        Office    3
    Restaurant  Office    1
    Airport     Home      1
    

    【讨论】:

      【解决方案3】:

      IIUC、SeriesGroupBy.value_countsSeries.idxmax

      df.groupby('From')['To'].value_counts().idxmax()
      

      输出

      ('Home', 'Office')
      

      一般groupby.value_countsgroupby.size

      另一种方式:

      df.apply(tuple, axis=1).value_counts().idxmax()
      

      或者

      df.apply(tuple, axis=1).mode()
      

      输出

      0    (Home, Office)
      dtype: object
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-09
        • 1970-01-01
        • 1970-01-01
        • 2018-10-01
        • 1970-01-01
        • 2021-01-13
        • 2013-11-27
        • 1970-01-01
        相关资源
        最近更新 更多