如何将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
相关产品推荐
相关产品推荐

