如何在pandas数据帧上选择最高值,而不多次选择同一列和同一行



我有一个pandas数据帧,如下所示:

0           1           2           3
0   0.371292    0.198658    0.178688    0.164981
1   0.262219    0.461267    0.447531    0.194239
2   0.412508    0.105518    0.254549    0.471136

我想选择较大的n数字,其中n = min(len(df), len(df.columns))与行名和列名一起。所有n数必须在不同的rowcolumn上的条件。

在上面的例子中,数字[0.471136, 0.461267, 0.371292]应该与其相应的(row, column)一起选择,因此[(2,3), (1,1), (0,0)]即使0.447531大于0.412508,选择0.371292而不是0.447531的原因是因为row 1在之前(对于0.461267(已经使用过

有没有蟒蛇式的方法?

这里有一个解决方案,可以确保您不会从同一行同一列中选择值:

n = min(len(df), len(df.columns))
for i in range(n):
t = df.reset_index().melt(id_vars="index")
max_cell = t.iloc[t.value.idxmax()]
row = max_cell["index"]
col = max_cell["variable"]
print(f"max cell is {max_cell}")
df.drop(row, axis=0, inplace = True)
df.drop(col, axis=1, inplace = True)