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

如何转换DataFrame实现基因数据的行转列格式调整

解决方案

1. 转换为目标宽格式表格

你可以用pandas的pivot方法实现格式转换,再填充缺失值并调整列名:

import pandas as pd

# 构建初始数据(替换成你的实际数据)
df = pd.DataFrame({
    'Name': ['A', 'A', 'A', 'B', 'B', 'C', 'C'],
    'Gene': ['gene1', 'gene2', 'gene3', 'gene1', 'gene2', 'gene1', 'gene3']
})

# 转换为宽格式,将Gene值作为列,填充缺失值为-----
wide_df = df.pivot(index='Name', columns='Gene', values='Gene').fillna('-----')

# 调整列名为首字母大写(匹配你的目标格式)
wide_df.columns = wide_df.columns.str.capitalize()

# 重置索引,让Name成为普通列
wide_df = wide_df.reset_index()

print(wide_df)

输出结果:

Name  Gene1  Gene2  Gene3
0    A  gene1  gene2  gene3
1    B  gene1  gene2  -----
2    C  gene1  -----  gene3

2. 获取每个样本的完整行数据

如果需要保留每个样本的所有Gene列表,可以用groupby聚合:

full_gene_rows = df.groupby('Name')['Gene'].agg(list).reset_index()

print(full_gene_rows)

输出结果:

Name                  Gene
0    A  [gene1, gene2, gene3]
1    B        [gene1, gene2]
2    C        [gene1, gene3]

关于你之前尝试的问题说明

你参考的链接是SQL场景的行转列方案,而这里是用pandas处理DataFrame,语法和逻辑有差异,直接套用SQL的思路可能无法生效。上面的pandas方法是针对Python数据处理的适配方案,刚好匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:31:08