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

使用Pandas转置和重索引DataFrame时遇格式问题求助

解决DataFrame转置后索引与列名异常问题

原始DataFrame

Sample ID  'Deinococcus soli' Cha et al. 2014  16SrX (Apple proliferation group)  16SrXII (Stolbur group) 
0   C1day1_barcode01                                  21                                  1                        0
1  C1day21_barcode19                                  22                                  0                        0
2   C3day1_barcode03                                  13                                  0                        0
3  C3day14_barcode15                                  14                                  2                        2
4  T1day21_barcode22                                  19                                  1                        1

期望输出

Sample ID  C1day1_barcode01  C1day21_barcode19  C3day1_barcode03  C3day14_barcode15  T1day21_barcode22
0    'Deinococcus soli' Cha et al. 2014                21                 22                13                 14                 19
1     16SrX (Apple proliferation group)                 1                  0                 0                  2                  1
2               16SrXII (Stolbur group)                 0                  0                 0                  2                  1

解决方案

用「索引设置+转置+列名重定义」的组合操作即可解决,步骤如下:

  1. 将Sample ID列设为DataFrame的索引,避免转置后它被当成普通数据行:
df.set_index('Sample ID', inplace=True)
  1. 执行转置操作,并将转置后的原索引(物种名称)转为普通列:
df_transposed = df.T.reset_index()
  1. 重新定义列名:把第一个列命名为Sample ID,后续列名使用原DataFrame的索引值(即各个样本ID):
df_transposed.columns = ['Sample ID'] + df.index.tolist()
  1. 重置行索引,移除多余的默认索引列:
df_transposed.reset_index(drop=True, inplace=True)

完整代码示例

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    "Sample ID": ["C1day1_barcode01", "C1day21_barcode19", "C3day1_barcode03", "C3day14_barcode15", "T1day21_barcode22"],
    "'Deinococcus soli' Cha et al. 2014": [21,22,13,14,19],
    "16SrX (Apple proliferation group)": [1,0,0,2,1],
    "16SrXII (Stolbur group)": [0,0,0,2,1]
})

# 核心处理流程
df.set_index('Sample ID', inplace=True)
df_transposed = df.T.reset_index()
df_transposed.columns = ['Sample ID'] + df.index.tolist()
df_transposed.reset_index(drop=True, inplace=True)

# 输出结果
print(df_transposed)

内容的提问来源于stack exchange,提问作者chan-98

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:56:04