Skip to main content
 首页 » 编程设计

python之根据多个可能的分隔符拆分 DataFrame 中的列

2025年05月04日1398°冷暖

我在 pandas 的数据框中有一个地址列,其中包含 3 种类型的信息,即街道、殖民地和城市。

三个值有两个可能的分隔符——“,”或空格,例如它可以是 Street1,Colony1,City1 或 Street1 Colony1 City1 .

我需要将此列分成三列,分别带有标签 'Street'、'Colony' 和 'City',值来自此 Address 列相应拆分。

执行此操作的最有效方法是什么,因为 pandas split 函数只允许您使用单个定界符或正则表达式(可能是正则表达式,因为我不太擅长正则表达式)。

请您参考如下方法:

如果您确定它是逗号 , 或空格 ,您可以使用:

df[['Street','Colony','City']] = df.address.str.split('[ ,]', expand=True) 

解释: str.split接受一个 pat(模式)参数:字符串或 正则表达式 来拆分。如果未指定,则按空格拆分。使用我们可以传递正则表达式的事实,这成为一项简单的任务,因为正则表达式中的 [ ,] 表示 或 ,。

另一种方法是使用 ' |,' 或者如果您可以有多个空格 '\s+|,'


完整示例:

import pandas as pd 
 
df = pd.DataFrame({ 
    'address': ['a,b,c','a b c'] 
}) 
 
df[['Street','Colony','City']] = df.address.str.split('[ ,]', expand=True) 
 
print(df) 

返回:

  address Street Colony City 
0   a,b,c      a      b    c 
1   a b c      a      b    c