您可以基于令牌的数据帧列为令牌创建标志字段吗?

时间:2019-11-13 18:58:38

标签: python pandas token

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

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]

我想使用Ingredients_tokens字段并为在整个数据框中出现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)

但不确定要去哪里

1 个答案:

答案 0 :(得分:0)

如果您使用的是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