【发布时间】:2016-03-02 20:29:00
【问题描述】:
我正在学习数据科学,想为我的数据集制作虚拟变量。
我有一个包含“产品类别”列的数据框,该列是一个匹配类别列表,类似于 ["Category1", "Category2".."CategoryN"]
我知道 Pandas 有很好的功能,可以自动生成虚拟变量(pandas.get_dummies),但在这种情况下,我猜我不能使用它(?)。
我知道如何遍历每一行以将 1 附加到每列的匹配元素。 我目前的代码是这样的:
for column_name in df.columns[1:]: #first column is "Product Category" and appended dummy columns (product category names) to the right previously
for index, _ in enumerate(df[column_name][:10]): #limit 10 rows
if column_name in df["Product Category"][index]:
df[column_name][index] = 1
但是,上面的代码效率不高,我不能使用它,因为我有超过 100,000 行。我想以某种方式对整个数组进行操作,但我不知道该怎么做。
有人可以帮忙吗?
【问题讨论】:
-
为什么你不能使用get dummies?
-
在这种情况下你会如何使用它?我有每个行元素的匹配类别列表。
-
我认为
get_dummies仅适用于该列是单个类别,而不是问题中所要求的多个类别。
标签: python numpy pandas array-broadcasting data-science