我有一个包含两列From
和To
的DataFrame,我需要知道最常见的地点组合From
和To
。
例子:
From To
------------------
Home Office
Home Office
Home Office
Airport Home
Restaurant Office
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 两列。
df.groupby(["From", "To"]).size().sort_values(ascending=False)
From To
-----------------------
Home Office 3
Restaurant Office 1
Airport Home 1
如果我理解正确,SeriesGroupBy.value_counts
和 Series.idxmax
df.groupby('From')['To'].value_counts().idxmax()
输出
('Home', 'Office')
一般来说,groupby.value_counts
比 groupby.size
更快。
另一种方法:
df.apply(tuple, axis=1).value_counts().idxmax()
或者
df.apply(tuple, axis=1).mode()
输出
0 (Home, Office)
dtype: object