python - 您可以根据标记的数据框列创建标记字段吗?
问题描述
我有一个看起来像这样的数据框:
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)
但不知道去哪里
解决方案
如果您使用的是最新版本之一,一种选择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
推荐阅读
- ruby-on-rails - dnsmasq 启动但忽略名称服务器 - 本地接口
- amazon-web-services - AWS Cognito - 在使用联合登录时添加自定义属性
- batch-file - 如何使用 for 语句去除 Windows Batch 中过多的 if 语句?
- c++ - 从 C++ 函数中删除 noexcept,如何处理调用它的 noexcept 函数?
- python-3.x - 如果列表中不存在键,则更新字典中的列表
- javascript - 如何使用@auth0/auth0-react 在类组件中获取 POST
- android - LiveData 在两次搜索后未发出新值
- python - 计算输入函数中的字符串数
- python - 如何在 pandas.apply 函数中索引和使用当前和上一个列值来计算下一个列值?
- kubernetes - Kong 入口控制器出现错误“没有与这些值匹配的路由”