您能根据令牌的数据帧列为令牌创建一个标志字段吗



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

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)

但我不确定该去哪里

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

相关内容

最新更新