我在 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
