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

如何计算pandas DataFrame两列相关性并解决KeyError报错问题

错误原因

你触发KeyError的核心原因是pandas多列选取的语法错误:直接写s['A1','A3']时,pandas会把括号内的元组('A1', 'A3')当做单个列名去查询,你的数据表中不存在这个名称的列,因此报错。
多列选取的正确语法是将列名放在Python列表中传入,即s[['A1', 'A3']]。

完整实现代码
import pandas as pd

def main():
    s = pd.read_csv('A1-dm.csv')
    processed_df = calculate_correlation(s)
    print(processed_df)

def calculate_correlation(s):
    # 计算A1和A3的皮尔逊相关系数
    corr_val = s['A1'].corr(s['A3'])
    print(f"A1和A3的相关性为:{corr_val}")
    # 按需求判断是否删除A3列
    # 注:原条件"大于0.6或小于0.6"等价于corr_val!=0.6,大概率为笔误
    # 若实际需求为相关性绝对值大于0.6时删除,可改为if abs(corr_val) > 0.6:
    if corr_val > 0.6 or corr_val < 0.6:
        s = s.drop('A3', axis=1)
    return s

if __name__ == "__main__":
    main()
关键语法说明
  • 多列选取:如果需要提取多个列构建子DataFrame,统一使用df[['列名1', '列名2']]的写法,内层方括号为存储列名的列表
  • 相关性计算:仅需要计算两列相关性时,可以直接调用两列Series对象的corr()方法,不需要提前提取子DataFrame
  • 列删除:使用drop方法删除列时,必须指定axis=1参数,否则pandas会默认按行索引删除

内容的提问来源于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 18:36:03