如何将6个重复宽格式DataFrame合并为单个长格式DataFrame?
解决方案:合并重复实验的DataFrame为长格式
步骤1:将每个宽格式DataFrame转为长格式
先把每个GFP和OD的宽表(列对应不同物种)转成以time、media(物种名称)为索引,值为对应参数的长表:
import pandas as pd # 处理GFP系列数据 gfp1_long = gfp1.melt(id_vars='time', var_name='media', value_name='gfp') gfp2_long = gfp2.melt(id_vars='time', var_name='media', value_name='gfp') gfp3_long = gfp3.melt(id_vars='time', var_name='media', value_name='gfp') # 处理OD系列数据 od1_long = od1.melt(id_vars='time', var_name='media', value_name='od') od2_long = od2.melt(id_vars='time', var_name='media', value_name='od') od3_long = od3.melt(id_vars='time', var_name='media', value_name='od')
步骤2:合并同一次重复的GFP和OD数据,添加实验ID
对每一组重复实验(如实验1对应gfp1+od1),按time和media字段合并,同时标记实验编号:
# 拼接实验1的GFP和OD数据 exp1 = pd.merge(gfp1_long, od1_long, on=['time', 'media']) exp1['experiment'] = 1 # 拼接实验2的GFP和OD数据 exp2 = pd.merge(gfp2_long, od2_long, on=['time', 'media']) exp2['experiment'] = 2 # 拼接实验3的GFP和OD数据 exp3 = pd.merge(gfp3_long, od3_long, on=['time', 'media']) exp3['experiment'] = 3
步骤3:合并三个重复实验的最终数据
把三个实验的结果拼接成统一的长格式DataFrame:
final_df = pd.concat([exp1, exp2, exp3], ignore_index=True) # 调整列顺序(可选,匹配你需要的输出结构) final_df = final_df[['time', 'experiment', 'media', 'od', 'gfp']]
补充:从文件加载数据的示例
如果你的原始数据存储在CSV等文件中,可先加载为DataFrame:
gfp1 = pd.read_csv('gfp1.csv') od1 = pd.read_csv('od1.csv') # 其余文件同理
内容的提问来源于stack exchange,提问作者Salt_Industry
相关产品推荐
相关产品推荐

