首页 > 其他分享 >【pandas小技巧】--拆分列

【pandas小技巧】--拆分列

时间:2023-08-03 10:00:20浏览次数:40  
标签:分列 -- df split str True pandas expand

拆分列是pandas中常用的一种数据操作,它可以将一个包含多个值的列按照指定的规则拆分成多个新列,方便进行后续的分析和处理。
拆分列的使用场景比较广泛,以下是一些常见的应用场景:

  1. 处理日期数据:在日期数据中,经常会将年、月、日等信息合并成一列,通过拆分列可以将其拆分成多个新列,方便进行时间序列分析。
  2. 处理地址数据:类似于日期数据,在地址数据中也经常会将省、市、区等信息合并成一列,通过拆分列可以将其拆分成多个新列,有利于进行地理位置分析。
  3. 处理姓名数据:在一些数据集中,姓名通常会以“姓”、“名”两列呈现,通过拆分列可以将其分别提取出来,方便进行人口统计学分析。
  4. 处理文本数据:在一些文本数据中,可能存在多个关键词同时出现的情况,通过拆分列可以将这些关键词拆分成多个新列,方便进行文本分类或聚类分析。

本篇简要介绍下pandas拆分列的常用方法。

1. 拆出列中部分信息

如下测试数据:

import pandas as pd

df = pd.DataFrame(
    {
        "姓名": ["张 三", "李 四", "王 五"],
        "地址": [
            "江苏省,南京市,建邺区",
            "浙江省,杭州市,余杭区",
            "安徽省,合肥市,庐阳区",
        ],
    }
)

df

image.png

提取城市信息:

df["城市"] = df["地址"].str.split(",",
                             expand=True)[1]
df["姓"] = df["姓名"].str.split(" ",
                             expand=True)[0]
df

image.png
注意要加上 expand=True 参数。

因为:

  1. expand=Falsesplit后的值是Series
  2. expand=Truesplit后的值是DataFrame

2. 拆分成多列

拆分成多列有两种方式:
第一种:

df[["省", "市", "区"]] = 
	df["地址"].str.split(",", expand=True)
df

image.png

第二种:这种方式不需要设置 expand=True

df["省"], df["市"], df["区"] = 
	zip(*df["地址"].str.split(","))
df

image.png

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

image.png

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

标签:分列,--,df,split,str,True,pandas,expand
From: https://www.cnblogs.com/wang_yb/p/17602491.html

相关文章

  • 开启firewalld或iptables的日志记录
    文件名:ip_fire.sh内容:#!/bin/bash#iptablesiptables_run(){#修改日志文件grep-e"^kern.*"/etc/rsyslog.confflag_k=$?if[$flag_k-eq0]thenecho"rsyslog日志指定文件已存在"elsesed-i'/#kern.*......
  • go语言mongodb操作
    MongoDB属于非关系型数据库,它是由C++编写的分布式文档数据库。内部使用类似于Json的bson二进制格式。官方文档:https://www.mongodb.com/docs/drivers/go/current/fundamentals/相关文档:https://www.w3cschool.cn/mongodb/mongodb-1uxs37ih.html连接packagemainimport(......
  • MODBUS之负数表示法
    MODBUS之负数表示法为客户开发MODBUS协议设备,协议中提到负数,之前未对负数表示方式做详细研究,经与客户沟通查找资料并记录。1.计算机三种记录数据方式,原码,反码,补码。2.反码和补码可用于表示负数。3.通常使用补码表示负数,因为补码更能反映出负数的实际对应关系。4.举例(十进制值......
  • cocoapi-pycocotools使用
    cocoapi-pycocotools使用安装pipinstallpycocotools==2.0.0orpipinstallpycocotools-windowsfrompycocotools.cocoimportCOCO函数和说明#这个文件实现了访问COCO数据集的接口.可以进行COCO标注信息的加载,解析和可视化操作classCOCO:#用于加载COCO标......
  • 题解 AGC054D
    前言因为本人尚菜,所以本篇文章没有什么数学符号,请大家放心食用。题目分析先吐槽一嘴,这个o表示(),这个x表示)(,十分形象。好,我们先观察原序列,容易得出第一条性质:ox的加入不会让我们不合法的序列变合法,相反,它会让我们合法的序列变不合法。于是可以得出,无论如何,只要我们......
  • 17.pyhton驱动电脑安装的zebra打印机机通过ZPL指令打印
    1#encoding:utf-823fromtkinterimport*4fromtkinterimportmessagebox5importwin32print6importtime7fromtkinterimportscrolledtext89#控制输入框只能输入数字且小于8位数10defvalidate_op(input_text):11ifinput_te......
  • linux环境部署nginx
    Linux环境下Nginx的离线安装与在线安装详细步骤参考地址:Nginx安装步骤——离线安装与在线安装详解_nginx依赖包_Olrookie的博客-CSDN博客CentOS7使用firewall-cmd打开关闭防火墙与端口以开放8080端口为例_firewall-cmd--add-port=8080/tcp--permanent_克豪的博客-CSDN博客一、......
  • 使用nativephp开发桌面应用测试
    2023年7月21日10:29:03官网:https://nativephp.com/源码:https://github.com/NativePHP/laravel看起像laravel团队的作品安装:注意需要php8.1以上,laravel10以上composercreate-projectlaravel/laravelexample-app或者,你可以通过Laravel安装器作为全局Composer依赖:com......
  • node封装一个图片拼接插件
    说在前面平时我们拼接图片的时候一般都要通过ps或者其他图片处理工具来进行处理合成,这次有个需求就需要进行图片拼接,而且我希望是可以直接使用代码进行拼接,于是就有了这么一个工具包。插件效果通过该插件,我们可以将图片进行以下操作:1、横向拼接两张图片如下,我们有这么两张......
  • zip压缩保留软链接命令
    压缩保留软链接命令-j:将要压缩的内容前面的路径不保留,即下面示例libxxx.so*前面的路径解压缩后不存在,没有该参数则存在-r:递归压缩-y:保留软链接关系zip-jrylibxxx.zip/home/plat/linux_5_10_latest/libxxx.so*上面命令不使用-j参数测试如下:zip-rylibxxx.zip/home/p......