|
拆分列是pandas中常用的一种数据操作,它可以将一个包含多个值的列按照指定的规则拆分成多个新列,方便进行后续的分析和处理。
拆分列的使用场景比较广泛,以下是一些常见的应用场景:
- 处理日期数据:在日期数据中,经常会将年、月、日等信息合并成一列,通过拆分列可以将其拆分成多个新列,方便进行时间序列分析。
- 处理地址数据:类似于日期数据,在地址数据中也经常会将省、市、区等信息合并成一列,通过拆分列可以将其拆分成多个新列,有利于进行地理位置分析。
- 处理姓名数据:在一些数据集中,姓名通常会以“姓”、“名”两列呈现,通过拆分列可以将其分别提取出来,方便进行人口统计学分析。
- 处理文本数据:在一些文本数据中,可能存在多个关键词同时出现的情况,通过拆分列可以将这些关键词拆分成多个新列,方便进行文本分类或聚类分析。
本篇简要介绍下pandas拆分列的常用方法。
1. 拆出列中部分信息
如下测试数据:- 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
2. 拆分成多列
拆分成多列有两种方式:
第一种:- df[["省", "市", "区"]] =
- df["地址"].str.split(",", expand=True)
- df
复制代码
第二种:这种方式不需要设置 expand=True- df["省"], df["市"], df["区"] =
- zip(*df["地址"].str.split(","))
- df
复制代码
3. 使用正则拆分
除了直接按照字符来split列中的数据,也可以用正则表达式来split。
比如如下的场景,需要对客户的手机号进行保密,可以通过正则表达式来截断手机号,只保留最后四位。- df = pd.DataFrame(
- {
- "单号": ["0001", "0002", "0003"],
- "手机号": [
- "13900000001",
- "18922233344",
- "15955566677",
- ],
- }
- )
- df["截断手机号"] = df["手机号"].str.split(
- r"\d{7}",
- expand=True,
- regex=True,
- )[1]
- df
复制代码
通过正则表达式,可以更加灵活的拆分列的数据。
来源:https://www.cnblogs.com/wang_yb/p/17602491.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|