我有一个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
数必须在不同的row
和column
上的条件。
在上面的例子中,数字[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)