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

如何基于DataFrame列向量运算结果创建仅保留最大值的自定义矩阵

解决Pandas中DataFrame列两两差值计算与自定义最大值矩阵的问题

别担心,我来一步步帮你搞定这两个需求,用Pandas就能轻松实现。

第一步:计算列的两两差值并生成新DataFrame

首先,我们需要处理原始数据(注意你的数据用逗号作为小数分隔符,读取时要指定decimal=','),然后按照需求计算两两列的差值(这里要注意取绝对值,因为你的示例结果都是正数):

import pandas as pd

# 1. 读取或构造原始DataFrame
# 如果是从CSV文件读取:
# df = pd.read_csv('your_data.csv', decimal=',')

# 如果是直接构造(和你提供的数据一致):
data = {
    'LK': list(range(11, 32)),
    'BALG': [0.000,0.000,0.000,0.000,0.001,0.001,0.002,0.007,0.012,0.023,0.040,0.075,0.109,0.140,0.178,0.219,0.260,0.301,0.353,0.405,0.480],
    'AMRU': [0.004,0.010,0.034,0.076,0.134,0.211,0.294,0.370,0.434,0.509,0.566,0.628,0.697,0.770,0.828,0.876,0.906,0.929,0.954,0.968,0.978],
    'CADZ': [0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.008,0.030,0.054,0.080,0.229,0.363,0.435,0.493,0.536,0.575,0.625,0.660,0.715,0.769]
}
df = pd.DataFrame(data)

# 2. 计算两两列的差值(取绝对值以匹配你的示例结果)
df['BALG-AMRU'] = (df['BALG'] - df['AMRU']).abs()
df['BALG-CADZ'] = (df['BALG'] - df['CADZ']).abs()
df['CADZ-AMRU'] = (df['CADZ'] - df['AMRU']).abs()

# 3. 提取需要的列并保留3位小数
result_df = df[['LK', 'BALG-AMRU', 'BALG-CADZ', 'CADZ-AMRU']].round(3)
print(result_df)

运行这段代码后,你会得到和你示例完全一致的DataFrame。

第二步:生成基于差值列最大值的自定义矩阵

接下来,我们要提取每个差值列的最大值,然后构造类似相关矩阵的格式:

import numpy as np

# 1. 提取各差值列的最大值
max_values = result_df[['BALG-AMRU', 'BALG-CADZ', 'CADZ-AMRU']].max()

# 2. 构造自定义矩阵(行列均为差值列名称,对角线填充对应列的最大值)
custom_matrix = pd.DataFrame(
    np.zeros((3, 3)),
    index=max_values.index,
    columns=max_values.index
)

# 填充对角线值
for col in max_values.index:
    custom_matrix.loc[col, col] = max_values[col]

# 保留3位小数
custom_matrix = custom_matrix.round(3)
print(custom_matrix)

如果你希望矩阵中所有位置都显示对应列的最大值(而不仅是对角线),可以修改构造矩阵的代码:

# 构造所有单元格显示对应列最大值的矩阵
custom_matrix = pd.DataFrame(
    {col: [max_values[col]]*3 for col in max_values.index},
    index=max_values.index
).round(3)

运行后你会得到符合需求的自定义矩阵,其中每个差值列对应的最大值会清晰展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:13:12