如何在Python Pandas中将列值转换为新列
解决方法
这是典型的长格式转宽格式的数据重塑操作,Python标准库没有直接对应的内置函数,但用pandas库的pivot方法可以一键搞定,非常简便。
具体实现代码
import pandas as pd # 构造原始数据 data = { 'Name': ['Karl', 'George', 'Karl', 'George', 'Rex', 'Rex'], 'Class': ['Math', 'English', 'English', 'Math', 'Math', 'English'], 'Rank': [1, 1, 2, 3, 2, 3] } df = pd.DataFrame(data) # 执行转置操作 result_df = df.pivot(index='Name', columns='Class', values='Rank').reset_index() # 调整列名格式(去掉自动生成的层级标签) result_df.columns.name = None print(result_df)
代码说明
pivot(index='Name', columns='Class', values='Rank'):指定Name作为行标识,Class的唯一值作为新列名,Rank对应填充到新列的位置。reset_index():把Name从索引列转回普通数据列,和目标格式对齐。columns.name = None:移除pivot自动生成的列层级名称,让输出结构更贴合需求。
运行后输出结果完全匹配你的要求:
Name Math English 0 George 3 1 1 Karl 1 2 2 Rex 2 3
如果不想依赖第三方库,只能手动用字典遍历原始数据拼接结果,但效率和简洁性远不如pandas,因此优先推荐上述方法。
内容的提问来源于stack exchange,提问作者user98235
相关产品推荐
相关产品推荐

