如何在Polars DataFrame中从右侧拆分列?
Polars实现从右拆分Location列的方法
问题背景
需要将以空格分隔的Location列拆分为城市、州、邮编三部分。在Pandas中可通过rsplit从右侧指定拆分次数,但使用Polars的str.split_exact(' ',2)从左侧拆分时,会出现城市名含空格(如La Mirada)的条目丢失邮编的情况(拆分结果为La, Mirada, CA),需要实现从右侧拆分的逻辑。
Pandas原有实现
先从右侧拆分1次分离出「城市+州」和邮编,再拆分城市与州:
df[["City State", "Zip"]] = df["Location"].str.rsplit(" ", n=1, expand=True) # 后续拆分City和State
Polars解决方案
Polars提供了str.rsplit方法,与Pandas的rsplit逻辑一致,支持从右侧指定拆分次数:
步骤1:拆分「城市+州」与邮编
使用str.rsplit从右侧拆分1次,展开为两列:
# Polars 0.19.0及以上版本支持expand参数 df = df.with_columns( pl.col("Location").str.rsplit(" ", n=1, expand=True).alias(["City State", "Zip"]) ) # 低版本Polars可通过列表索引实现 df = df.with_columns( pl.col("Location").str.rsplit(" ", n=1).alias("split_temp") ).with_columns( pl.col("split_temp").list.get(0).alias("City State"), pl.col("split_temp").list.get(1).alias("Zip") ).drop("split_temp")
步骤2:拆分城市与州
同样用str.rsplit从右侧拆分「城市+州」列,分离出城市和州:
df = df.with_columns( pl.col("City State").str.rsplit(" ", n=1, expand=True).alias(["City", "State"]) ).drop("City State")
说明
str.split_exact是从左侧按固定次数拆分,无法处理城市名含空格的场景;而从右侧拆分优先分离出格式固定的邮编(5位数字),再处理可能含空格的城市名,能避免信息丢失。
内容的提问来源于stack exchange,提问作者MrEvo
相关产品推荐
相关产品推荐

