如果我有一个这样的数组:
| ID| col1| col2| idxmax|
| --|--|--|--|
| 1 |3.0| 4.0| col2|
| 2 |5.0| 5.0|抢七|
| 3 |6.0版本|九点零|Col 2|
在我的示例中,我想根据赢得平局的名称返回col 1或col 2,不包括行ID。
目前,df.idxmax(axis = 1)
函数只是返回第一个最大值的列的列名,根据文档。然而,为了确保消除偏见,我想把它变成一个随机平局打破,但我真的不知道如何做到这一点。
你能帮帮忙吗?
5条答案
按热度按时间lvjbypge1#
我喜欢@Timeless的随机抽样方法,问题是它总是对具有相同的最大值组合的不同行使用相同的平局决胜局。
另一种方法是先
stack
数据:字符串
或者:
型
输出示例:
型
cczfrluj2#
将每行与其 max 值匹配,以进一步随机
np.random.choice
列名:字符串
示例输出:
型
nwlqm0z13#
一个可能的选择是使用
sample
来 shuffle 列顺序:字符串
输出量:
型
j13ufse24#
你的例子中的数组似乎有点错误,因为你在第一行中使用了col1作为idxmax,尽管col2中的值比col1中的值大(4 > 3)。然而,我认为这样的东西会给予你想要的结果:
字符串
tf7tbtn25#
对于每一行,找到最大值,找到包含它的单元格,然后得到它们的索引并随机选择。我不确定这是否可以矢量化,但至少使用
apply
很容易编写:字符串
输出示例:
型