python pandas:将逗号分隔的列拆分为新列 - 每个值一个
Posted
技术标签:
【中文标题】python pandas:将逗号分隔的列拆分为新列 - 每个值一个【英文标题】:python pandas: split comma-separated column into new columns - one per value 【发布时间】:2018-07-27 03:34:43 【问题描述】:我有一个这样的数据框:
data = np.array([["userA","event2, event3"],
['userB',"event3, event4"],
['userC',"event2"]])
data = pd.DataFrame(data)
0 1
0 userA "event2, event3"
1 userB "event3, event4"
2 userC "event2"
现在我想得到一个这样的数据框:
0 event2 event3 event4
0 userA 1 1
1 userB 1 1
2 userC 1
有人可以帮忙吗?
【问题讨论】:
可能重复:***.com/questions/35491274/… Pandas split column of lists into multiple columns的可能重复 【参考方案1】:看来您需要将get_dummies
替换为0
以清空string
s:
df = data[[0]].join(data[1].str.get_dummies(', ').replace(0, ''))
print (df)
0 event2 event3 event4
0 userA 1 1
1 userB 1 1
2 userC 1
详情:
print (data[1].str.get_dummies(', '))
event2 event3 event4
0 1 1 0
1 0 1 1
2 1 0 0
【讨论】:
虚拟化时如何添加前缀?【参考方案2】:如果你有很多特征(词),那么使用稀疏矩阵来更有效地使用内存是有意义的:
In [120]: from sklearn.feature_extraction.text import CountVectorizer
In [121]: cvect = CountVectorizer()
In [122]: data = data.join(pd.SparseDataFrame(cvect.fit_transform(data.pop(1)),
data.index,
cvect.get_feature_names(),
default_fill_value=0))
In [123]: data
Out[123]:
0 event2 event3 event4
0 userA 1 1 0
1 userB 0 1 1
2 userC 1 0 0
In [124]: data.memory_usage()
Out[124]:
Index 80
0 24
event2 16
event3 16
event4 8
dtype: int64
【讨论】:
以上是关于python pandas:将逗号分隔的列拆分为新列 - 每个值一个的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 SQL 将存储为 CSV(逗号分隔值)的表列的内容拆分为新表中的单独行吗?