python - 根据多个可能的分隔符拆分 DataFrame 中的列
问题描述
我在 pandas 的数据框中有一个地址列,其中包含 3 种类型的信息,即街道、殖民地和城市。
三个值带有两个可能的分隔符 - ',' 或空格,例如它可以是Street1,Colony1,City1
或Street1 Colony1 City1
。
我需要将此列拆分为三个带有各自标签的列'Street'
,'Colony'
并相应地拆分此列'City'
中的值Address
。
什么是最有效的方法,因为 pandassplit
函数只允许您使用单个分隔符或正则表达式(可能是正则表达式,因为我不太擅长正则表达式)。
解决方案
如果您确定它是逗号,
或空格,您可以使用:
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
推荐阅读
- javascript - 为什么/在哪里多次调用这个 componentDidMount()?
- function - 什么是镜像位的数学(用函数描述)等价物?
- python - docker hub 你是否为每个图像创建一个存储库
- javascript - 如何使用 Pi Vision Web Api 获取过滤后的数据
- excel - 如果包含部分文本/字符,则 Excel 条件格式
- tensorflow - 如何复制 TF hub 保存的模型架构?
- c++ - 尝试为 Ubuntu 18.04 和 ARM Cortex-A9 交叉编译 C++ 代码时出错
- node.js - 从 BullMQ 完成的作业中检索结果的推荐方法是什么?
- firebase - 从谷歌登录为flutter firebase添加用户数据
- java - Java while 循环最后需要条件变量(为什么?)