我有一堆数据代表大型集合的选择和分类。类似的东西:
pizzas = [
['ham','cheese','pineapple'],
['bacon','feta','cheese'],
['mushrooms','feta','ham],
...
]
我想把它变成一个数据框,每个顶部类型有一列,每个披萨有一行。像
这样的东西ham cheese ... feta
1 1 0
0 1 1
0 0 1
...
(显然会有更多的列和行,但你会得到一般的想法。)
这样做的最佳方式是什么?
答案 0 :(得分:2)
您可以先尝试从构造函数创建DataFrame
,然后按列get_dummies
使用groupby
和最后sum
:
import pandas as pd
pizzas = [
['ham','cheese','pineapple'],
['bacon','feta','cheese'],
['mushrooms','feta','ham']
]
df = pd.DataFrame(pizzas)
print df
0 1 2
0 ham cheese pineapple
1 bacon feta cheese
2 mushrooms feta ham
df = pd.get_dummies(df, prefix_sep='', prefix='')
print df
bacon ham mushrooms cheese feta cheese ham pineapple
0 0 1 0 1 0 0 0 1
1 1 0 0 0 1 1 0 0
2 0 0 1 0 1 0 1 0
print df.groupby(df.columns, axis=1).sum()
bacon cheese feta ham mushrooms pineapple
0 0 1 0 1 0 1
1 1 1 1 0 0 0
2 0 0 1 1 1 0