如何将Excel/Pandas中的列标题转换为独立数据列?
解决方案
要实现将包含配置参数的列标题拆分独立数据列的需求,可以通过Pandas的数据重塑和字符串提取完成,具体步骤如下:
步骤1:导入数据并查看初始结构
先加载示例数据,确认初始DataFrame的结构:
import pandas as pd data1 = {'V1': [1, 2, 3, 4], 'I(T=27 v2=5)': [4, 5, 4, 8], 'I(T=140 v2=5)': [5, 9, 4, 12]} df = pd.DataFrame(data1) print(df)
输出初始结构:
V1 I(T=27 v2=5) I(T=140 v2=5) 0 1 4 5 1 2 5 9 2 3 4 4 3 4 8 12
步骤2:将宽表转为窄表(数据重塑)
使用pd.melt函数,把所有电流列合并为两列:config(存储原列标题的配置信息)和current(存储对应电流值),保留V1作为关联的电压列:
melted_df = df.melt(id_vars='V1', var_name='config', value_name='current') print(melted_df)
输出结果:
V1 config current 0 1 I(T=27 v2=5) 4 1 2 I(T=27 v2=5) 5 2 3 I(T=27 v2=5) 4 3 4 I(T=27 v2=5) 8 4 1 I(T=140 v2=5) 5 5 2 I(T=140 v2=5) 9 6 3 I(T=140 v2=5) 4 7 4 I(T=140 v2=5) 12
步骤3:从配置字符串中提取参数
通过正则表达式,从config列中提取T和v2的数值,生成独立的数据列:
# 提取T的值 melted_df['T'] = melted_df['config'].str.extract(r'T=(\d+)').astype(int) # 提取v2的值 melted_df['v2'] = melted_df['config'].str.extract(r'v2=(\d+)').astype(int)
步骤4:清理并整理最终数据
删除不需要的config列,调整列的顺序:
final_df = melted_df.drop('config', axis=1)[['V1', 'T', 'v2', 'current']] print(final_df)
最终输出结果:
V1 T v2 current 0 1 27 5 4 1 2 27 5 5 2 3 27 5 4 3 4 27 5 8 4 1 140 5 5 5 2 140 5 9 6 3 140 5 4 7 4 140 5 12
扩展:处理真实Excel文件
如果是处理本地Excel文件,只需将初始数据加载替换为:
df = pd.read_excel('你的文件路径.xlsx')
后续步骤和上述示例完全一致。
内容的提问来源于stack exchange,提问作者Piyush Goenka
相关产品推荐
相关产品推荐

