Skip to main content
 首页 » 编程设计

python之Pandas- 通过在 | 上拆分单元格来创建新列n次

2025年05月04日38Terrylee

我有一个包含一些调查结果的 DataFrame;每列都是对一个问题的回答。但是,对于允许从复选框中选择多个(<10)答案的问题,该列已将这些答案与格式“Response 1 Checked | Response 4 Checked | Response 6 Checked ....”连接起来,所以我不能只是根据预定义的顺序拆分列,因为它不会说明什么时候没有检查。

ID     NormalResponse    MultipleCheckboxResponse 
1      Answer3           Response 3 
2      Answer1           Response 1| Response 7 
3      Answer2           Response 2| Response 4| Response 7 
4      Answer2           Response 2 | Response 3 

我如何将这些原因拆分为新的列,最好只在单元格中使用 bool 标记或 1/0 来确定它是否被标记。

我想看看

ID     NormalResponse    Response1    Response2   Response3     Response4... 
1      Answer3           0            0            1            0 
2      Answer1           1            0            0            0 
3      Answer2           0            1            0            1 
4      Answer2           0            1            1            0 

请您参考如下方法:

您可以使用 get_dummies , 经过一些字符串操作以删除竖线周围的空格 |:

>>> resp = df.MultipleCheckboxResponse.str.replace("[\s]*\|[\s]*", "|") 
>>> dummies = resp.str.get_dummies(sep="|") 
>>> df.iloc[:,:2].join(dummies) 
   ID NormalResponse  Response 1  Response 2  Response 3  Response 4  Response 7 
0   1        Answer3           0           0           1           0           0 
1   2        Answer1           1           0           0           0           1 
2   3        Answer2           0           1           0           1           1 
3   4        Answer2           0           1           1           0           0 

请注意,这只会为实际看到的响应生成列。如果您想要一个 response6 列,即使没有人报告过 response6,那么您需要自己将它们添加到一个循环中。