Python pandas如何将唯一行值转换为关联对应数据的新列
数据转换需求实现方案(Pandas)
核心实现代码
import pandas as pd # 构造示例数据,实际使用时可替换为你读取数据的逻辑,比如pd.read_csv("your_file.csv") data = [ ['a', '2021-12-11', 759, 46], ['a', '2021-13-11', 803, 30], ['b', '2021-12-11', 46, 10], ['b', '2021-13-11', 86, 7] ] df = pd.DataFrame(data, columns=['Col1', 'Col2', 'Col3', 'Col4']) # 1. 透视转换得到多级列名结果 df_pivot = df.pivot(index='Col2', columns='Col1', values=['Col3', 'Col4']) # 2. 调整列名格式,按要求拼接前缀和原列名 df_pivot.columns = [f'{col[1]}-{col[0]}' for col in df_pivot.columns] # 3. 重置索引把Col2恢复为普通列 df_result = df_pivot.reset_index() # 可选:调整列顺序和目标格式完全对齐 df_result = df_result[['Col2', 'a-Col3', 'a-Col4', 'b-Col3', 'b-Col4']] print(df_result)
结果验证
运行后输出结果完全匹配需求:
Col2 a-Col3 a-Col4 b-Col3 b-Col4 0 2021-12-11 759 46 46 10 1 2021-13-11 803 30 86 7
特殊场景适配
如果你的原始数据中存在重复的Col1+Col2组合,把pivot替换为pivot_table指定聚合规则即可,示例:
# 重复值按求和聚合,可根据需求替换为'mean'/'max'等其他聚合函数 df_pivot = df.pivot_table(index='Col2', columns='Col1', values=['Col3', 'Col4'], aggfunc='sum')
内容的提问来源于stack exchange,提问作者Ilias Gi
相关产品推荐
相关产品推荐

