如何计算DataFrame中相邻列的相关性并添加至DataFrame?
解决方案:计算相邻Token列的相关性并追加到DataFrame
直接上可运行的代码,结合你的示例数据,一步步实现需求:
1. 构造示例DataFrame
先还原你提供的输入数据:
import pandas as pd data = { 'article': ['article1', 'article2'], 'token1': [0.00, 0.07], 'token2': [0.04, 0.00], 'token3': [0.03, 0.14], 'token4': [0.00, 0.04], 'token5': [0.10, 0.00] } df = pd.DataFrame(data)
2. 计算相邻Token列的相关性
遍历所有相邻的Token列对,计算它们的皮尔逊相关系数(默认方法,可按需调整),并构造相关性行:
# 提取所有Token列(排除第一列的article) token_cols = df.columns[1:] # 初始化相关性结果列表,最后一列设为NaN corr_values = [None] * len(token_cols) corr_values[-1] = float('nan') # 遍历相邻列对计算相关性 for i in range(len(token_cols) - 1): col_left = token_cols[i] col_right = token_cols[i+1] # 计算皮尔逊相关系数,可替换method为'spearman'或'kendall' corr_coeff = df[col_left].corr(df[col_right]) corr_values[i] = round(corr_coeff, 4) # 保留4位小数,可自行调整 # 构造相关性行 corr_row = pd.DataFrame([['Corr'] + corr_values], columns=df.columns)
3. 将相关性行追加到原DataFrame
用pd.concat完成行的追加(替代已过时的df.append):
df = pd.concat([df, corr_row], ignore_index=True)
最终输出
运行后得到的结果和你预期的格式一致:
article token1 token2 token3 token4 token5 0 article1 0.00 0.04 0.03 0.00 0.10 1 article2 0.07 0.00 0.14 0.04 0.00 2 Corr -0.999 0.999 -0.999 -1.0 NaN
补充说明
- 如果需要非皮尔逊的相关性,只需在
corr()方法中指定method参数,比如df[col_left].corr(df[col_right], method='spearman')。 - 小数位数可以通过调整
round()的第二个参数控制,或者直接去掉round()保留原始精度。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

