首页 > 解决方案 > 您可以根据标记的数据框列创建标记字段吗?

问题描述

我有一个看起来像这样的数据框:

Beverage        Ingredients                                                           Ingredients_Tokens
Orange Juice    Orange Juice Concentrate,  Orange Pulp                                [orange, juice, concentrate, orange, pulp]
Root Beer       Sugar, Water, Caramel Color                                           [sugar, water, caramel, color]
...             ...                                                                   ...
Apple Juice     INGREDIENTS: CONTAINS PURE FILTERED WATER,  CONCENTRATED APPLE JUICE  [pure, filtered, water, concentrated, apple, juice]

我想获取成分标记字段并为在整个数据框中出现超过 20 次的每个标记创建标志字段,以便我的最终数据框包含所有饮料以及它们是否包含列出的标记,例如

Beverage               Token_Orange   Token_Sugar Token_Water ... Token_Apple
Orange_Juice                      1             0           0              0
Root Beer                         0             1           1              0
...
Apple Juice                       0             0           1              1

我尝试了一个尝试创建 Token 变量然后存储它的循环,例如(47 是令牌的总数):

df=pd.DataFrame() 
for i in range (0,47): 
     T['Token'] = T['Ingredients_Tokens'][i] 
     df = df.append([Q]) 

df = pd.DataFrame(df)

但不知道去哪里

标签: pythonpandastoken

解决方案


如果您使用的是最新版本之一,一种选择pandas是使用.explode

In [167]: df
Out[167]:
       thing            ingredients
0         oj  [orange, juice, pulp]
1  root beer          [roots, beer]

In [168]: df.explode("ingredients").set_index("ingredients", append=True).unstack().notnull()
Out[168]:
             thing
ingredients   beer  juice orange   pulp  roots
0            False   True   True   True  False
1             True  False  False  False   True

推荐阅读