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

如何从pandas DataFrame获取相关系数并解决KeyError: (1, 0)报错

报错根因

pandas的corr()方法返回的是带行列标签的DataFrame对象,而非Numpy数组,不能直接使用整数位置元组(1,0)进行索引,这是触发KeyError的核心原因。

解决方案

你可以从三种常用索引方式中任选一种解决取值问题:

  • 用iloc按整数位置取相关系数矩阵的值
return s.corr().iloc[1,0]
  • 先转为Numpy数组再按位置取值
return s.corr().to_numpy()[1,0]
  • 按列名索引(更稳妥,不会因为列顺序调整出错)
corr_matrix = s.corr()
return corr_matrix.loc['A1', 'A3']

完整功能实现

以下是满足「A1与A3相关系数绝对值大于0.6时删除A3列」需求的完整可运行代码,同时清理了原代码中冗余的导入语句:

import pandas as pd
import numpy as np

def main():
    df = pd.read_csv('A1-dm.csv')
    processed_df = handle_high_correlation(df)
    print("处理后的数据集列:", processed_df.columns.tolist())

def handle_high_correlation(df):
    # 计算A1和A3的皮尔逊相关系数
    a1_a3_corr = df[['A1', 'A3']].corr().loc['A1', 'A3']
    print(f"A1与A3的相关系数为:{round(a1_a3_corr, 4)}")
    # 满足阈值则删除A3列
    if abs(a1_a3_corr) > 0.6:
        return df.drop(columns=['A3'])
    return df

if __name__ == "__main__":
    main()

运行你提供的样例数据集时,A1与A3的相关系数接近1,会触发删除条件,最终输出的数据集将不包含A3列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:57:03