如何按索引分组计算DataFrame中Col-1与其余列的相关性
按索引分组计算Col-1与其他列的相关性
问题描述
现有如下结构的DataFrame:
df: Col-1 Col-2 Col-3 ..................Col-100 index A 23 33 1 5 A 33 22 4 29 A 1 5 3 24 B 65 12 4 42 B 2 24 4 24 B 3 12 24 5
需要按index分组,计算Col-1与DataFrame中其余所有列的相关性,期望输出格式如下:
Col-1 Col-2 Col-3 ............Col-100 A 1 0.24 0.2 0.45 B 1 0.30 0.25 0.18
解决方案
可以通过pandas的分组功能结合自定义计算逻辑实现,具体代码如下:
import pandas as pd # 定义分组内的相关性计算函数 def group_corr_calc(group): # 计算分组数据的相关系数矩阵,提取第一行(对应Col-1与所有列的相关性) return group.corr().iloc[0] # 按索引分组并应用计算函数 result_df = df.groupby(df.index).apply(group_corr_calc) # 可选:保留两位小数对齐示例格式 result_df = result_df.round(2)
代码说明
- 自定义计算函数:对每个分组数据计算完整的相关系数矩阵,由于
Col-1是第一列,矩阵的第一行就是它与所有列的相关系数(包含自身的1)。 - 分组计算:通过
groupby(df.index)按索引分组,再用apply将自定义函数应用到每个分组,自动拼接成目标格式的结果DataFrame。 - 小数保留:
round(2)是可选步骤,用于将结果保留两位小数,和示例输出的格式匹配。
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

