【发布时间】:2019-01-17 09:40:18
【问题描述】:
我有一个调查回复表,其中包含可以有多个答案的问题,使用一组复选框进行选择。
当我从响应表中获取数据并将其导入 pandas 时,我得到以下信息:
Timestamp Sports you like Age
0 23/11/2013 13:22:30 Football, Chess, Cycling 15
1 23/11/2013 13:22:34 Football 25
2 23/11/2013 13:22:39 Swimming,Football 22
3 23/11/2013 13:22:45 Chess, Soccer 27
4 23/11/2013 13:22:48 Soccer 30
运动列中可以有任意数量的运动值(进一步的行有篮球、排球等),并且还有一些其他列。我想对问题的结果进行统计(有多少人喜欢足球等)。问题是,所有答案都在一列中,因此按该列分组并要求计数是行不通的。
在 Pandas 中是否有一种简单的方法可以将这种数据框转换为一个有多个列的数据框,分别称为 Sports-Football、Sports-Volleyball、Sports-Basketball,并且每个列都是布尔值(1 表示是,0 表示不)?我想不出一个明智的方法来做到这一点
我需要的是一个看起来像这样的新数据框(连同年龄列) -
Timestamp Sports-Football Sports-Chess Sports-Cycling ....
0 23/11/2013 13:22:30 1 1 1
1 23/11/2013 13:22:34 1 0 0
2 23/11/2013 13:22:39 1 0 0
3 23/11/2013 13:22:45 0 1 0
我尝试到现在无法继续。
df['Sports you like'].str.split(',\s*')
它分为不同的列,但第一列可能有任何运动,如果用户喜欢足球,我只需要第一列中的 1 或 0。
【问题讨论】:
-
如果我的分隔符同时是 ', ' 和 ',' 怎么办。在某些行中,逗号后有一个空格,逗号后只有一个值。比如这个 Football, Chess 和 Football, Cycling 。那么我的分隔符应该等于什么 -
pd.concat([df['Id'], df['Sports you like'].str.get_dummies(sep=",")], axis=1我应该使用正则表达式吗? @jezrael -
你是对的,所以重新打开并添加解决方案。
-
标记的重复处理正则表达式,即同时被
','和', '分割。
标签: python-3.x pandas google-forms