Skip to main content
 首页 » 编程设计

python之python中Pandas.DataFrame中特定列的最常见模式

2025年05月04日32sxdcgaq8080

我知道如何获取列表列表中出现次数最多的元素,例如

a = [[3,4], [3,4],[3,4], [1,2], [1,2], [1,1],[1,3],[2,2],[3,2]] 
print max(a, key=a.count) 

应该打印 [3, 4],即使最常见的数字是第一个元素的 1 和第二个元素的 2。

我的问题是如何用 Pandas.DataFrame 做同样的事情。

例如,我想知道以下方法get_max_freq_elem_of_df的实现:

def get_max_freq_elem_of_df(df): 
  # do some things 
  return freq_list 
 
df = pd.DataFrame([[3,4], [3,4],[3,4], [1,2], [1,2], [1,1],[1,3],[2,2],[4,2]]) 
x = get_max_freq_elem_of_df(df) 
print x # => should print [3,4] 

请注意 DataFrame.mode() 方法不起作用。对于上面的示例,df.mode() 返回 [1, 2] 而不是 [3,4]

更新

已经解释了为什么 DataFrame.mode() 不起作用。

请您参考如下方法:

您可以使用 groupby.size 然后找到最大值:

>>> df.groupby([0,1]).size() 
0  1 
1  1    1 
   2    2 
   3    1 
2  2    1 
3  4    3 
4  2    1 
dtype: int64 
>>> df.groupby([0,1]).size().idxmax() 
(3, 4)