首页 > 解决方案 > 根据多个可能的分隔符拆分 DataFrame 中的列

问题描述

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

三个值带有两个可能的分隔符 - ',' 或空格,例如它可以是Street1,Colony1,City1Street1 Colony1 City1

我需要将此列拆分为三个带有各自标签的列'Street''Colony'并相应地拆分此列'City'中的值Address

什么是最有效的方法,因为 pandassplit函数只允许您使用单个分隔符或正则表达式(可能是正则表达式,因为我不太擅长正则表达式)。

标签: pythonregexpandas

解决方案


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

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

说明: str.split接受一个 pat(模式)参数:字符串或正则表达式进行拆分。如果未指定,则在空格处拆分。使用我们可以传递正则表达式的事实,这变得很容易,因为[ ,]在正则表达式中意味着or ,

另一种方法是使用' |,',或者如果你可以有多个空格'\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

推荐阅读