首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas dataframe -通过用列值替换值来合并行

pandas dataframe -通过用列值替换值来合并行
EN

Stack Overflow用户
提问于 2018-01-24 16:32:06
回答 1查看 58关注 0票数 2

很抱歉标题模棱两可。

我有一个学生数据集,我想对这些学生运行一个聚类算法。

数据集的结构是这样的:每个学生有多行,每行都有年龄、年级(9、10等)、学生正在选修的单个班级以及该班级的最终分数。

在预处理过程中,我应用pd.get_dummies为学生选修的每个课程获取一个布尔值的列,分数列保持不变。

我想合并行,这样对于每个学生,我只有一行(因为我想对学生进行聚类,而不是每行),并且我希望每个班级的最终分数显示在班级列中,然后删除分数列。

我会试着举一个例子:

代码语言:javascript
复制
Name, Age, Grade, Class, Score
John, 16, 9, Biology, 98
John, 16, 9, Algebra, 95
John, 16, 9, French, 96

应用pd.get_dummies的结果如下所示:

代码语言:javascript
复制
Name, Age, Grade, Class_Biology, Class_Algebra, Class_French, Score

我对以下结果感兴趣:

代码语言:javascript
复制
Name, Age, Grade, Class_Biology, Class_Algebra, Class_French
John, 16, 9, 98, 95, 96

有没有比迭代行并在数据框中为每个学生手动创建新行更有效的方法?

EN

回答 1

Stack Overflow用户

发布于 2018-01-24 16:35:19

您可以使用set_index + unstack + add_prefix

代码语言:javascript
复制
df = (df.set_index(['Name','Age','Grade', 'Class'])['Score']
        .unstack()
        .add_prefix('Class_')
        .reset_index()
        .rename_axis(None, axis=1))
print (df)

   Name  Age  Grade  Class_Algebra  Class_Biology  Class_French
0  John   16      9             95             98            96
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48417950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档