You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Pandas DataFrame每行除以主对角线元素并设交点为1?

解决方案

要实现每行除以该行的主对角线元素(让行列标签相同的单元格值为1),你需要先提取每行对应的主对角线元素,再进行除法操作:

  1. 提取主对角线元素:使用lookup方法获取每行中与行索引同名的列对应的值,这就是该行的主对角线元素:

    diag_vals = cohort_any_action.lookup(cohort_any_action.index, cohort_any_action.columns)
    
  2. 执行除法操作:调用divide方法,将每行的所有元素除以对应行的主对角线元素:

    result = cohort_any_action.divide(diag_vals, axis=0)
    

补充说明

  • 如果你的DataFrame行索引和列名不完全匹配(比如部分行索引没有对应的列名),lookup会报错,这种情况可以先筛选出索引和列名的交集再操作:
    common_labels = cohort_any_action.index.intersection(cohort_any_action.columns)
    filtered_df = cohort_any_action.loc[common_labels, common_labels]
    diag_vals = filtered_df.lookup(filtered_df.index, filtered_df.columns)
    result = filtered_df.divide(diag_vals, axis=0)
    
  • 如果主对角线存在0值,除法后会出现inf或NaN,可以根据需求用replace或fillna处理这些异常值。

内容的提问来源于stack exchange,提问作者bengisu yilmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:18:09