特征生成-根据某些列值进行汇总

时间:2018-11-04 10:23:52

标签: python numpy dataframe data-science

我使用python分析和处理数据集。 我目前正在开发功能,但需要一些专业知识。

数据显示受训人员已执行的任务。 任务可以很容易也可以很困难。 学员可以协助或完全完成任务。

我想汇总每个受训者如何解决每个困难,但是到目前为止还无法按要求获得。

下面是数据示例和我试图实现的输出。 非常感谢您使用python获取这些聚合的帮助。

以csv格式指向原始数据的链接为here

Source Data
Name    Task    Difficulty  Involvment  Score
Jim     A1      Easy        Full        80
Jim     A2      Hard        Assist      40
Jim     B6      Easy        Full        10
Jim     D12      Hard       Assist      40
Ann     B6      Easy        Full        70
Ann     A2      Hard        Assist      20
Ann     C7      Hard        Assist      20
Ann     D12      Hard       Full        80
Joe     A2      Hard        Assist      40


Required Output format

Name    OverallScore    CountEasyAssist CountEasyFull   CountHardAssist CountHardFull
Jim     160             0                2                2                0
Ann     190             0                1                2                1
Joe     40              0                0                1                0

1 个答案:

答案 0 :(得分:0)

您可以尝试使用pd.crosstab,尽管显然无法为sample.csv中没有计数的列进行汇总-例如列CountEasyAssist

import pandas as pd

df = pd.read_csv('sample1.csv')

scores = df.groupby('Name')['Score'].sum().to_frame()

df = pd.crosstab([df.Name], [df.Involvment, df.Difficulty])

df = scores.join(df)

df.columns = ['OverallScore', 'CountHardAssist', 'CountEasyFull', 'CountHardFull']