如何将Pandas特定DataFrame转换为索引为{列名_行索引}的Series?
解决方案
完全不需要手动遍历单元格,Pandas有现成的内置方法可以快速实现需求,核心思路是利用堆叠(stack)操作配合索引重构:
步骤示例
假设你的原始DataFrame结构如下:
import pandas as pd # 构造示例数据 df = pd.DataFrame( [[0.85, 0.92, 0.88], [0.03, 0.02, 0.04]], index=['mean', 'std'], columns=['completeness', 'homogeneity', 'label_f1_score'] )
方法一:简洁链式写法
# 堆叠列到内层索引,然后拼接索引级别生成目标格式 result_series = df.stack().rename(lambda idx: f"{idx[1]}_{idx[0]}")
方法二:分步清晰写法
如果觉得链式写法不够直观,可以拆成步骤:
# 1. 堆叠操作:将列转为内层索引,得到多层索引Series stacked_series = df.stack() # 2. 重构索引:把多层索引的「列名」和「行索引」拼接成目标格式 new_index = [f"{col}_{row}" for row, col in stacked_series.index] # 3. 生成最终Series result_series = pd.Series(stacked_series.values, index=new_index)
结果验证
最终得到的result_series结构如下:
completeness_mean 0.85 homogeneity_mean 0.92 label_f1_score_mean 0.88 completeness_std 0.03 homogeneity_std 0.02 label_f1_score_std 0.04 dtype: float64
内容的提问来源于stack exchange,提问作者moi
相关产品推荐
相关产品推荐

