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

求助:Pandas中数据透视与分组操作遇到问题

Pandas实现人员任务计数透视表

现有人员每日任务分配数据集,每人单日可能承担多项任务,因此对应多行记录。需要转换为每人一行的DataFrame,各列为不同任务的总计数,具体示例如下:

初始数据

Name1/1/231/2/231/3/23
Person 1Assignment AAssignment BAssignment C
Person 1Assignment D"EMPTY""EMPTY"
Person 1"Empty""Empty""Empty"
Person 2Assignment E"Empty""Empty"
Person 2"Empty""Empty"Assignment E

期望结果

NameAssignment AAssignment BAssignment CAssignment DAssignment E"Empty"
Person 1111105
Person 2000024

解决方案

  1. 数据清洗与格式转换
    先将日期列转为长格式,同时统一处理Empty的不同写法(去除引号、统一大小写):

    import pandas as pd
    
    # 构造初始数据
    data = {
        "Name": ["Person 1", "Person 1", "Person 1", "Person 2", "Person 2"],
        "1/1/23": ["Assignment A", "Assignment D", '"Empty"', "Assignment E", '"Empty"'],
        "1/2/23": ["Assignment B", '"EMPTY"', '"Empty"', '"Empty"', '"Empty"'],
        "1/3/23": ["Assignment C", '"EMPTY"', '"Empty"', '"Empty"', "Assignment E"]
    }
    df = pd.DataFrame(data)
    
    # 转换为长格式,保留Name作为标识列
    df_melted = df.melt(id_vars="Name", var_name="Date", value_name="Task")
    
    # 清洗Task列:去除引号,统一Empty的写法
    df_melted["Task"] = df_melted["Task"].str.replace('"', '', regex=False).str.capitalize()
    
  2. 分组统计与透视
    按Name和Task分组计数,再转换为宽格式,缺失值填充为0:

    # 分组统计每个任务的数量
    task_counts = df_melted.groupby(["Name", "Task"]).size().reset_index(name="Count")
    
    # 透视成宽表,填充缺失值为0并转为整数
    result = task_counts.pivot(index="Name", columns="Task", values="Count").fillna(0).astype(int)
    
    # 重置索引,让Name回到普通列
    result = result.reset_index()
    
  3. 调整列顺序(可选)
    如果需要和期望结果的列顺序完全匹配,可手动指定列顺序:

    desired_columns = ["Name", "Assignment A", "Assignment B", "Assignment C", "Assignment D", "Assignment E", "Empty"]
    result = result[desired_columns]
    

最终输出

运行代码后得到的result即为目标DataFrame:

Name  Assignment A  Assignment B  Assignment C  Assignment D  Assignment E  Empty
0  Person 1             1             1             1             1             0      5
1  Person 2             0             0             0             0             2      4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:30:36