使用pandas导入CSV文件并对重复测量列完成数据透视处理
问题描述
现有一个存储矩阵测量结果的CSV文件,对应矩阵结构如下:
A B C 1 2 3
该CSV文件的结构规则如下:
- 前2列(
Col&row)代表矩阵的坐标参数 - 其余列代表测量配置(取值为0、1或2)
由于测量会重复执行,因此配置列会重复出现,列名序列为(0,1,2,1,0)。
示例数据集内容如下:
Col row 0 1 2 1 0 #these represent measurement setup 1 A 1 0.7 0.5 0.4 0.5 2 B 1 0.4 0.2 0.1 0.1 3 C 1 0.3 0.2 0.1 0.1
需求说明
- 正确导入该CSV文件
- 对数据进行透视处理,生成包含
Col、row、setup、iteration、value字段的数据集
字段说明
setup对应测量配置值,序列为(0,1,2,1,0)iteration代表单个像素(即同一Col、row组合)的测量次数,取值为1、2、3、4、5
预期输出结构
Col row setup iteration value 1 A 0 1 1 1 A 1 2 0.7 1 A 2 3 0.5 1 A 1 4 0.4 1 A 0 5 0.5 2 B 0 1 1 2 B 1 2 0.4 2 B 2 3 0.2 2 B 1 4 0.1 2 B 0 5 0.1 .....etc
实现方案
步骤1:导入CSV文件
import pandas as pd # 替换为实际CSV文件路径,若CSV包含#开头的注释行,可添加comment='#'参数自动过滤 df = pd.read_csv('your_file.csv', comment='#')
步骤2:透视转换数据
# 宽表转长表,保留坐标列Col、row df_long = df.melt(id_vars=['Col', 'row'], var_name='setup', value_name='value') # 按坐标分组生成迭代次数编号 df_long['iteration'] = df_long.groupby(['Col', 'row']).cumcount() + 1 # 转换setup为整数类型(按需调整) df_long['setup'] = df_long['setup'].astype(int) # 调整列顺序得到最终结果 df_result = df_long[['Col', 'row', 'setup', 'iteration', 'value']].reset_index(drop=True)
验证输出
print(df_result.head(10))
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

