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

如何使用pandas将DataFrame列值转行为指定格式的透视表

你之前的pivot调用参数错误,你将sample也传入了columns参数,导致结果不符合预期,正确的处理逻辑如下:

1. 构造测试数据验证逻辑

import pandas as pd

# 构造和你示例一致的原始数据
raw_data = [
    ['a', 'A', 'G', 1.0],
    ['a', 'C', 'T', 4.0],
    ['a', 'GGG', 'AAC', 1.0],
    ['b', 'A', 'G', 1.0],
    ['b', 'C', 'T', 4.0],
]
df = pd.DataFrame(raw_data, columns=['sample', 'REF', 'ALT', '#'])

2. 核心透视转换

# 行索引设为sample,列索引设为REF+ALT的组合,值取#列,缺失值填充为0
pivot_result = df.pivot(
    index='sample',
    columns=['REF', 'ALT'],
    values='#'
).fillna(0).astype(int)

执行后得到的结果默认是双层列索引结构,第一层为REF值,第二层为ALT值,和你需要的结构完全匹配:

sample(A,G)(C,T)(GGG,AAC)
a141
b140

3. 适配你要求的打印格式

如果你需要把REF、ALT作为前两行显示成你给出的示例格式,可以增加转置处理:

formatted_df = pivot_result.T.reset_index()
print(formatted_df)

输出结果:

REF  ALT  a  b
0     A    G  1  1
1     C    T  4  4
2   GGG  AAC  1  0

补充说明

如果你示例目标输出最后多出的(C,A)列是需要强制保留的组合,你可以提前将该组合的空记录插入原始数据,再执行透视即可对应生成数值为0的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:54:01