【发布时间】:2021-09-20 16:42:58
【问题描述】:
当 mode() 返回多个值时,即在多模式分布中,是否有一种巧妙的方法来打破关系。对于上下文,我正在实施一个投票系统,我想以一种自定义的、非随机的方式打破联系。
在下面的人工示例中,我想要每一行的模式,但如果有多种模式,我希望选择名称最短的模式。
import pandas as pd
import random
random.seed(0)
fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']
d = pd.DataFrame(
{c : [random.choice(fruits)
for _ in range(10)]
for c in "ABCDEF"}
)
print(d,"\n")
print(d.mode(axis=1))
输出显示初始数据帧和pandas.DataFrame.mode()的默认输出
A B C D E F
0 date elderberry fig elderberry date fig
1 date banana elderberry apple elderberry fig
2 apple elderberry banana cherry cherry apple
3 cherry banana cherry date apple elderberry
4 elderberry cherry apple cherry elderberry date
5 date banana fig elderberry apple cherry
6 date apple apple fig apple banana
7 cherry elderberry fig banana fig fig
8 date cherry cherry elderberry date cherry
9 cherry elderberry date date fig fig
0 1 2 3 4 5
0 date elderberry fig NaN NaN NaN
1 elderberry NaN NaN NaN NaN NaN
2 apple cherry NaN NaN NaN NaN
3 cherry NaN NaN NaN NaN NaN
4 cherry elderberry NaN NaN NaN NaN
5 apple banana cherry date elderberry fig
6 apple NaN NaN NaN NaN NaN
7 fig NaN NaN NaN NaN NaN
8 cherry NaN NaN NaN NaN NaN
9 date fig NaN NaN NaN NaN
我已经发布了我自己的尝试作为答案,但是有没有更简洁的方法来做到这一点?在任何情况下,我希望它可以帮助其他有同样问题的人。
【问题讨论】:
-
得到mode后,想用某个自定义函数将非NaN元素连续排序,这样理解对吗? :)
-
是的@zabop,下面是我的尝试,但我想知道是否有更好的方法。
标签: python pandas statistics