You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Polars中基于字典映射分隔字符串列的值来创建新列

如何在Polars中基于字典映射分隔字符串列的值来创建新列

Sorry if the title is confusing.

我对Pandas挺熟悉的,本来打算用暴力迭代和基于索引的赋值来生成新列,但最近了解到Polars,想试试它的并行化/速度优势,同时也想更新自己的数据技能。这是我第一次用Polars,结果不太顺利。

我有一个DataFrame,其中一列是用逗号分隔的标签字符串,每个单元格都是相关食物的列表。我想要逐行扫描这些内容,根据现有食物对应的通用类别,添加对应的新列——如果该行包含某个具体食物,就在对应的类别列标记X或者True之类的标识。

举个例子,我的DataFrame长这样:

import polars as pl

my_df = pl.from_repr("""
┌───────┬────────┬──────────────────┐
│ Index ┆ Person ┆ Food Provided    │
│ ---   ┆ ---    ┆ ---              │
│ i64   ┆ str    ┆ str              │
╞═══════╪════════╪══════════════════╡
│ 1     ┆ Billy  ┆ Apple, Hot dog   │
│ 2     ┆ Suzy   ┆ Celery, brownies │
└───────┴────────┴──────────────────┘
""")

我还有一个用于映射具体食物到通用类别的字典:

foodTypes_dict = {
    'Apple': 'Fruit', 
    'Hot dog': 'Meat', 
    'Celery': 'Vegetable', 
    'brownies': 'Dessert'
}

我想要生成的最终结果大概是这样的:

IndexPersonFood ProvidedFruitVegetableMeatDessert
1BillyApple, Hot dogXNoneXNone
2SuzyCelery, browniesNoneXNoneX

我试过这段代码:

for key in foodTypes_dict.keys():
    my_df.with_columns((pl.col("Food Provided").str.contains(key)).alias(foodTypes_dict[key]))

这段代码终于没有语法错误了,但根本不起作用——它完全没有创建任何新列。我在循环里加了my_df.glimpse()查看,DataFrame的维度根本没变化。也没有报错,在Jupyter Notebook里运行完瞬间结束,但完全不是预期的输出。

希望有人能帮忙指点一下,谢谢!

备注:内容来源于stack exchange,提问作者Sparky Parky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:28:04