如何将相关性DataFrame转换为指定格式的三元组列表?
解决方案
你可以通过两种简洁方式实现需求,以下是具体代码:
先构造示例DataFrame(方便测试)
import pandas as pd data = { 'A': [1.000000, 0.932159, -0.976221], 'B': [0.932159, 1.000000, -0.831509], 'C': [-0.976221, -0.831509, 1.000000] } df = pd.DataFrame(data, index=['A', 'B', 'C'])
方法一:利用Pandas的stack()方法(简洁高效)
# 堆叠DataFrame并重置索引,将行列索引转为列 stacked_df = df.stack().reset_index() # 重命名列方便后续处理 stacked_df.columns = ['row', 'col', 'correlation'] # 过滤掉行列名称相同的对角线元素(自相关的1.0值) filtered_df = stacked_df[stacked_df['row'] != stacked_df['col']] # 转换为目标格式的列表 result = filtered_df.values.tolist()
方法二:手动遍历索引和列(直观易懂)
result = [] # 遍历每一行的索引 for row_name in df.index: # 遍历每一列的名称 for col_name in df.columns: # 跳过行列名称相同的情况 if row_name != col_name: # 将[行名, 列名, 相关系数]添加到结果列表 result.append([row_name, col_name, df.loc[row_name, col_name]])
执行任意一种方法后,result变量就会存储你需要的格式列表,输出结果与示例完全一致。
内容的提问来源于stack exchange,提问作者123mcgr
相关产品推荐
相关产品推荐

