如何在Pandas DataFrame两列间计算逐行相关系数并生成新列
注:皮尔逊相关系数需要至少2组样本才能计算出有统计意义的结果,单独每行的两个数值不存在相关系数的概念,以下是两种匹配你需求的常见实现方案:
方案1:滚动窗口逐行计算相关系数
如果你需要的是「以当前行为末尾,取连续N行数据计算相关系数」,可以用pandas内置的rolling方法实现:
import pandas as pd # 你的示例数据 df = pd.DataFrame({'Bananas': [11, 2, 0.5], 'Weight': [84, 81, 78]}) # 窗口大小设为2,即每次取当前行+上一行共2组数据计算相关系数 window_size = 2 df['rolling_corr'] = df['Bananas'].rolling(window_size).corr(df['Weight'])
计算后新列rolling_corr会存储每行对应的相关系数,前window_size-1行因为样本量不足会返回NaN。
方案2:逐行计算两列的数值关联度量
如果你只是需要得到每行两个数值的对应关联值(而非统计意义上的相关系数),直接对两列做逐行运算即可:
# 示例1:计算每行Bananas与Weight的比值 df['value_ratio'] = df['Bananas'] / df['Weight'] # 示例2:计算每行两个值的绝对差值 df['abs_diff'] = abs(df['Bananas'] - df['Weight'])
内容的提问来源于stack exchange,提问作者data_runner
相关产品推荐
相关产品推荐

