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

如何将Pandas DataFrame地址列转换为列表并提取每行地址首段?

问题描述

现有如下DataFrame:

name          address
Wings        3109 N Main St, Hope Mills, NC 28348   
Burger King  407 N Eastern Blvd, Fayetteville, NC 28301 

想要提取address列中逗号前的地址首段内容(即3109 N Main St和407 N Eastern Blvd),但当前代码运行后只提取了每个地址的第一个字符:

df = pd.read_csv("mydataframe.csv")
df['address'] = list(df['address'])
df.loc[:, 'new_col'] = df.address.map(lambda x: x[0])

错误输出:

name          address                                   new_col
Wings        3109 N Main St, Hope Mills, NC 28348          3
Burger King  407 N Eastern Blvd, Fayetteville, NC 28301    4

预期输出:

name          address                                   new_col
Wings        3109 N Main St, Hope Mills, NC 28348          3109 N Main St
Burger King  407 N Eastern Blvd, Fayetteville, NC 28301    407 N Eastern Blvd
解决方案

错误原因

你把address列转为列表的操作完全多余——原address列的每个元素本身就是字符串,转成列表后反而把单个字符串拆成了字符列表,所以x[0]取到的是字符串的第一个字符,而非地址首段。

正确实现方式

直接对原字符串进行分割,取逗号前的部分即可,以下两种方法都可行:

方法1:使用Pandas字符串分割方法

利用Pandas内置的str.split()处理字符串列,指定分隔符为逗号,取分割后的第一个元素:

df = pd.read_csv("mydataframe.csv")
df['new_col'] = df['address'].str.split(',').str[0]

方法2:正则表达式提取

如果需要更精准的匹配(比如应对地址中可能出现的特殊逗号场景),可以用str.extract()提取逗号前的所有内容:

df = pd.read_csv("mydataframe.csv")
df['new_col'] = df['address'].str.extract(r'^(.*?),')

两种方法都能得到预期的输出结果,且无需额外将列转为列表。

内容的提问来源于stack exchange,提问作者coding2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:18:19