拆分列是pandas
中常用的一种数据操作,它可以将一个包含多个值的列按照指定的规则拆分成多个新列,方便进行后续的分析和处理。
拆分列的使用场景比较广泛,以下是一些常见的应用场景:
本篇简要介绍下pandas
拆分列的常用方法。
如下测试数据:
import pandas as pd
df = pd.DataFrame(
{
"姓名": ["张 三", "李 四", "王 五"],
"地址": [
"江苏省,南京市,建邺区",
"浙江省,杭州市,余杭区",
"安徽省,合肥市,庐阳区",
],
}
)
df
提取姓和城市信息:
df["城市"] = df["地址"].str.split(",",
expand=True)[1]
df["姓"] = df["姓名"].str.split(" ",
expand=True)[0]
df
注意要加上 expand=True
参数。
因为:
expand=False
:split
后的值是Series
expand=True
:split
后的值是DataFrame
拆分成多列有两种方式:
第一种:
df[["省", "市", "区"]] =
df["地址"].str.split(",", expand=True)
df
第二种:这种方式不需要设置 expand=True
df["省"], df["市"], df["区"] =
zip(*df["地址"].str.split(","))
df
除了直接按照字符来split
列中的数据,也可以用正则表达式来split
。
比如如下的场景,需要对客户的手机号进行保密,可以通过正则表达式来截断手机号,只保留最后四位。
df = pd.DataFrame(
{
"单号": ["0001", "0002", "0003"],
"手机号": [
"13900000001",
"18922233344",
"15955566677",
],
}
)
df["截断手机号"] = df["手机号"].str.split(
r"\d{7}",
expand=True,
regex=True,
)[1]
df
通过正则表达式,可以更加灵活的拆分列的数据。