我有一个包含一些调查结果的 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,那么您需要自己将它们添加到一个循环中。
