python - 如何在熊猫数据框中选择最高值,而不是多次选择同一列和同一行
问题描述
我有一个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.371292
是0.447531
即使0.447531
大于0.412508
,是因为row 1
之前已经使用过 (for 0.461267
)
有没有这样做的pythonic方式?
解决方案
这是一个解决方案,可以确保您不会从同一行或同一列中选择值:
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)
推荐阅读
- ruby-on-rails - 如何在 Rails 6 中使用 Webpackers 安装模板(CSS 和 JS)?
- python - SSL 证书验证失败:无法获取本地颁发者证书
- flutter - 颤动将http.get放在哪里
- python - 如何在跳过不必要的元素时检查列表中的所有元素是否在另一个列表中
- r - ggplot 两个 y 轴上的两个不同比例 - 分面换行
- excel - 如何在 Excel 中的两列日期之间创建年份列表?
- node.js - Nginx / MEAN Stack - 在建立连接之前关闭 WebSocket
- cluster-analysis - 所有问卷项目的主成分分析?
- swift - SwiftUI onDelete() 没有列表
- c# - 如何使用 xor 交换浮点数和 uint 数?