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

如何将DataFrame中列值转换为独立列(附数据示例)

解决方法

你需要的操作叫做数据透视(Pivoting),也就是将长格式数据转换为宽格式。在Pandas中可以通过pivot()函数直接实现:

代码示例

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'Sample.ID': [1,1,1,1,1,1,1,1],
    'Treatment': ['N','C','NC','DI','N','C','NC','DI'],
    'Time': ['T30','T30','T30','T30','T90','T90','T90','T90'],
    'ppm.N2O': [0.48,0.7,2.95,0.33,1.64,2.96,23.37,1.04]
})

# 执行透视转换
pivoted_df = df.pivot(
    index=['Sample.ID', 'Treatment'],  # 保留为行索引的列
    columns='Time',                   # 转换为列名的列
    values='ppm.N2O'                  # 填充新列的数据
).reset_index()

# 调整列名以匹配目标格式
pivoted_df.columns = ['Sample.ID', 'Treatment', 'T30.ppm.N2O', 'T90.ppm.N2O']

print(pivoted_df)

输出结果

Sample.ID Treatment  T30.ppm.N2O  T90.ppm.N2O
0          1         C          0.70          2.96
1          1        DI          0.33          1.04
2          1         N          0.48          1.64
3          1        NC          2.95         23.37

如果你的数据存在重复的(Sample.ID, Treatment, Time)组合,可以使用pivot_table()并指定聚合函数(如mean)来处理:

pivoted_df = df.pivot_table(
    index=['Sample.ID', 'Treatment'],
    columns='Time',
    values='ppm.N2O',
    aggfunc='mean'
).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:53:17