首页 > 解决方案 > 将列值附加到 Pandas 数据框中同一行的新单元格中

问题描述

我有一个 csv 文件,其中包含namesub_asub_bsub_csub_dsegmentgender. 我想创建一个新列,其中包含每个学生学习classes的所有课程(sub-columns),用逗号分隔。

完成此任务的最简单方法是什么?

结果数据框应如下所示:

+------+-------+-------+-------+-------+---------+--------+---------------------+
| name | sub_a | sub_b | sub_c | sub_d | segment | gender | classes             |
+------+-------+-------+-------+-------+---------+--------+---------------------+
| john | 1     | 1     | 0     | 1     | 1       | 0      | sub_a, sub_b, sub_d |
+------+-------+-------+-------+-------+---------+--------+---------------------+
| mike | 1     | 0     | 1     | 1     | 0       | 0      | sub_a, sub_c, sub_d |
+------+-------+-------+-------+-------+---------+--------+---------------------+
| mary | 1     | 1     | 0     | 1     | 1       | 1      | sub_a, sub_b, sub_d |
+------+-------+-------+-------+-------+---------+--------+---------------------+
| fred | 1     | 0     | 1     | 0     | 0       | 0      | sub_a, sub_c        |
+------+-------+-------+-------+-------+---------+--------+---------------------+

标签: pythonpandasdata-manipulation

解决方案


让我们试试dot

s=df.filter(like='sub')
df['classes']=s.astype(bool).dot(s.columns+',').str[:-1]

推荐阅读