基于条件创建新列:Python DataFrame长表转宽表方法咨询
Python pandas长表转宽表解决方案
这是典型的长表转宽表需求,你可以用pandas内置的pivot方法直接实现,以下是可直接运行的完整代码:
import pandas as pd # 构造示例原始DataFrame,你有原始df的话可以直接跳过这部分 raw_data = { "id": ["A", "A", "A", "B", "B", "B"], "Date": ["2018-01-01", "2018-02-01", "2018-03-01", "2018-01-01", "2018-02-01", "2018-03-01"], "wages": [100, 200, 100, 200, 100, 200] } df = pd.DataFrame(raw_data) # 核心转换逻辑 wide_df = df.pivot( index="id", # 保留为行的列 columns="Date", # 要转为新列名的列 values="wages" # 填充到新单元格的取值列 ).reset_index() # 将id从索引转为普通列 # 移除列名上方的默认名称标记,和你需要的输出结构完全对齐 wide_df.columns.name = None
如果你的原始数据中存在相同id+相同Date对应多条工资记录的情况,可以改用pivot_table方法做聚合转换,示例代码如下:
# aggfunc可以指定sum/mean等聚合函数,根据你的需求调整即可 wide_df = df.pivot_table( index="id", columns="Date", values="wages", aggfunc="sum" ).reset_index() wide_df.columns.name = None
内容的提问来源于stack exchange,提问作者Shirley Michelle Redroban
相关产品推荐
相关产品推荐

