给定此 Dataframe :
df2 = pd.DataFrame([[3,3,3,3,3,3,5,5,5,5],[2,2,2,2,8,8,8,8,6,6]], columns=list('ABCDEFGHIJ'))
A B C D E F G H I J
0 3 3 3 3 3 3 5 5 5 5
1 2 2 2 2 8 8 8 8 6 6
我创建了2个新闻列,为每一行给予max_freq和max_freq_value:
df2["max_freq_val"] = df2.apply(lambda x: x.mode().agg(list), axis=1)
df2["max_freq"] = df2.loc[:, df2.columns != "max_freq_val"].apply(lambda x: x.value_counts().max(), axis=1)
A B C D E F G H I J max_freq_val max_freq
0 3 3 3 3 3 3 5 5 5 5 [3] 6
1 2 2 2 2 8 8 8 8 6 6 [2, 8] 4
EDIT:我已经编辑了我的代码,灵感来自**@rhug123**给出的答案。
感谢你们所有人的回答。
3条答案
按热度按时间2exbekwf1#
试试这个,它使用
mode()
或
ui7jx7zq2#
我们可以尝试
stack
,然后使用agg
调整频率,将倍数输入list
nhaq1z213#
也许你可以使用这个函数:
以下各项的顺序可能会影响结果
希望能有所帮助:)