You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含不同值的重复Well行转换为多列浓度宽表?

解决长表转宽表并填充缺失值的问题

核心思路

利用pandas的透视表功能直接将长格式数据转换为宽格式,同时自动填充缺失的药物浓度为0,无需手动创建初始全0的DataFrame。

具体实现步骤

  1. 导入pandas库
import pandas as pd
  1. 构造/读取原始数据
    如果是从CSV文件读取数据:
df = pd.read_csv("your_data.csv")

如果用示例数据测试:

data = [
    ["A1", "D1", 0.5],
    ["A1", "D2", 0.25],
    ["A1", "D3", 0.1],
    ["B1", "D1", 0.5],
    ["B1", "D2", 0.25]
]
df = pd.DataFrame(data, columns=["Well", "Drug", "Drug_Conc"])
  1. 转换为宽表并填充缺失值
    使用pivot_table一步完成转换和填充:
wide_df = df.pivot_table(
    index="Well",    # 指定作为行标识的列
    columns="Drug",  # 指定拆分列为多列的字段
    values="Drug_Conc",  # 填充到单元格的数值
    fill_value=0     # 缺失值自动填充为0
).reset_index()  # 将Well从索引转为普通列
  1. 调整列名匹配需求
# 将D1/D2/D3重命名为目标格式的列名
wide_df.columns = ["Well", "Drug1_conc", "Drug2_conc", "Drug3_conc"]

最终结果

运行后得到的wide_df格式如下:

WellDrug1_concDrug2_concDrug3_conc
A10.50.250.1
B10.50.250

替代方法:使用pivot+fillna

如果数据中不存在同一Well+Drug的重复行,也可以用pivot后手动填充0:

wide_df = df.pivot(index="Well", columns="Drug", values="Drug_Conc").fillna(0).reset_index()
wide_df.columns = ["Well", "Drug1_conc", "Drug2_conc", "Drug3_conc"]

内容的提问来源于stack exchange,提问作者LinearParadox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:23:25