ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【pandas小技巧】--拆分列 [打印本页]

作者: 自由的羽毛    时间: 2023-8-3 09:59
标题: 【pandas小技巧】--拆分列
拆分列是pandas中常用的一种数据操作,它可以将一个包含多个值的列按照指定的规则拆分成多个新列,方便进行后续的分析和处理。
拆分列的使用场景比较广泛,以下是一些常见的应用场景:
本篇简要介绍下pandas拆分列的常用方法。
1. 拆出列中部分信息

如下测试数据:
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "姓名": ["张 三", "李 四", "王 五"],
  5.         "地址": [
  6.             "江苏省,南京市,建邺区",
  7.             "浙江省,杭州市,余杭区",
  8.             "安徽省,合肥市,庐阳区",
  9.         ],
  10.     }
  11. )
  12. df
复制代码

提取城市信息:
  1. df["城市"] = df["地址"].str.split(",",
  2.                              expand=True)[1]
  3. df["姓"] = df["姓名"].str.split(" ",
  4.                              expand=True)[0]
  5. df
复制代码

注意要加上 expand=True 参数。
因为:
2. 拆分成多列

拆分成多列有两种方式:
第一种:
  1. df[["省", "市", "区"]] =
  2.         df["地址"].str.split(",", expand=True)
  3. df
复制代码

第二种:这种方式不需要设置 expand=True
  1. df["省"], df["市"], df["区"] =
  2.         zip(*df["地址"].str.split(","))
  3. df
复制代码

3. 使用正则拆分

除了直接按照字符来split列中的数据,也可以用正则表达式来split。
比如如下的场景,需要对客户的手机号进行保密,可以通过正则表达式来截断手机号,只保留最后四位。
  1. df = pd.DataFrame(
  2.     {
  3.         "单号": ["0001", "0002", "0003"],
  4.         "手机号": [
  5.             "13900000001",
  6.             "18922233344",
  7.             "15955566677",
  8.         ],
  9.     }
  10. )
  11. df["截断手机号"] = df["手机号"].str.split(
  12.     r"\d{7}",
  13.     expand=True,
  14.     regex=True,
  15. )[1]
  16. df
复制代码

通过正则表达式,可以更加灵活的拆分列的数据。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4