如何将Pandas DataFrame转换为适配特定软件的指定格式?
Pandas DataFrame 格式转换方案
常见场景:宽表转长表(匹配你的格式转换需求)
如果原始数据是宽表(每行对应一个样本,多列对应不同基因/指标的数值),目标是转成长表(每行对应一个样本-基因的数值对),用 Pandas 的 melt() 函数就能快速实现。
代码示例
先模拟原始数据结构:
import pandas as pd # 模拟原始DataFrame df_raw = pd.DataFrame({ "Sample": ["S1", "S2", "S3"], "GeneA": [12, 24, 36], "GeneB": [15, 27, 39], "GeneC": [18, 30, 42] })
执行转换:
# 格式转换核心代码 df_transformed = pd.melt( df_raw, id_vars=["Sample"], # 保留作为唯一标识的列 var_name="Gene", # 转换后的基因名称列名 value_name="Value" # 转换后的数值列名 )
转换后结果结构:
| Sample | Gene | Value |
|---|---|---|
| S1 | GeneA | 12 |
| S2 | GeneA | 24 |
| S3 | GeneA | 36 |
| S1 | GeneB | 15 |
| S2 | GeneB | 27 |
| S3 | GeneB | 39 |
| S1 | GeneC | 18 |
| S2 | GeneC | 30 |
| S3 | GeneC | 42 |
特殊场景调整
如果原始数据有复合表头、多标识列等特殊结构,可灵活调整:
- 需保留多个标识列:在
id_vars传入列名列表,比如id_vars=["Sample", "Group"] - 仅转换部分列:用
value_vars指定目标列,比如value_vars=["GeneA", "GeneC"] - 层级表头:先通过
df.columns = df.columns.map('_'.join)合并层级,再执行melt()
内容的提问来源于stack exchange,提问作者cell_bio_guy
相关产品推荐
相关产品推荐

