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

如何封装Pandas相关性计算函数,避免重复输入列名参数?

问题与解决方案

问题描述

原有代码用于计算DataFrame中所有列与指定列的相关性:

corrresult = df1.drop("COMPRIMISED_ALERT", axis=1).apply(lambda x: x.corr(df1.COMPRIMISED_ALERT))

尝试封装为函数时遇到错误,因为传入的列名是带引号的字符串,但函数中误用了属性访问方式导致无法正确获取列:

def correlation_vector (d,v):  
    corrresult = d.drop(v, axis=1).apply(lambda x: x.corr(d.v)) 
    return corrresult 

需求是不新增第三个参数,仅通过传入DataFrame和带引号的列名字符串实现功能。

解决方案

问题出在d.v的访问方式上——当列名是字符串变量时,Pandas需要用方括号索引d[v]来获取对应列,而不是属性访问。修改后的函数如下:

def correlation_vector(d, v):
    corrresult = d.drop(v, axis=1).apply(lambda x: x.corr(d[v]))
    return corrresult

说明

  • d.drop(v, axis=1)本身就支持传入字符串类型的列名,无需修改;
  • 将d.v替换为d[v]后,就能通过字符串变量v正确定位到目标列,与x.corr()配合完成相关性计算。

调用示例

corrresult = correlation_vector(df1, "COMPRIMISED_ALERT")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:37:16