【pandas小技巧】--拆分列
拆分列是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

通过正则表达式,可以更加灵活的拆分列的数据。
【pandas小技巧】--拆分列的更多相关文章
- pandas小技巧
		1. 删除列 import pandas as pd df.drop("Unnamed: 0", axis=1, inplace=True) 2. 转换列的格式 df[" ... 
- pandas 小技巧
		1.找出某个字段包含某字符串的行: my_df[my_df['col_B'].str.contains('大连') > 0]或者 my_df[my_df['col_B'].apply(lambd ... 
- Pandas一些小技巧
		Pandas有一些不频繁使用容易忘记的小技巧 1.将不同Dataframe写在一个Excel的不同Sheet,或添加到已有Excel的不同Sheet(同名Sheet会覆盖) from pandas i ... 
- Java在处理大数据的时候一些小技巧
		Java在处理大数据的时候一些小技巧 发布时间:2013-05-09 00:00:00 来源:中国IT实验室 作者:佚名 关键字:Java 众所周知,java在处理数据量比较大的时候,加载到内存必 ... 
- ( 译、持续更新 ) JavaScript 上分小技巧(三)
		最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL).(学习)T ... 
- Linux的95个小技巧
		Linux的95个小技巧 by WEB全栈工程师 on 2012 年 03 月 27 日 这里总结了Linux使用中的一些小技巧 1.实现RedHat非正常关机的自动磁盘修复 先登录到服务器,然后在/ ... 
- 30个有关Python的小技巧
		从我开始学习python的时候,我就开始自己总结一个python小技巧的集合.后来当我什么时候在Stack Overflow或者在某个开源软件里看到一段很酷代码的时候,我就很惊讶:原来还能这么做!,当 ... 
- <转> 30 个有关 Python 的小技巧
		目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 ... 
- BizTalk开发小技巧
		BizTalk开发小技巧 随笔分类 - Biztalk Biztalk 使用BizTalk实现RosettaNet B2B So Easy 摘要: 使用BizTalk实现RosettaNet B2B ... 
- 让你瞬间萌比的35个python小技巧
		今天在看python算法的时候,看到一篇关于python的小技巧.瞬间萌比了,原来python也可以这样玩,太神奇了.萌比的是原来这么简单的东西自己都不知道,虽然会写.废话不多说了,开始上菜. 1.拆 ... 
随机推荐
- std::cin 和 std::getline 混用的问题
			如果存在如下的输入, 11 is a prime 考虑如下的程序, std::cin>>number; std::getline(std::cin,input) std::cin 在读取数 ... 
- 【python爬虫】对于微博用户发表文章内容和评论的爬取
			此博客仅作为交流学习 对于喜爱的微博用户文章内容进行爬取 (此部分在于app页面进行爬取,比较方便) 分析页面 在这里进行json方法进行,点击Network进行抓包 发现数据加载是由这个页面发出的, ... 
- 2022-04-19:A*算法, 过程和Dijskra高度相处, 有到终点的预估函数, 只要预估值<=客观上最优距离,就是对的。 预估函数是一种吸引力: 1)合适的吸引力可以提升算法的速度; 2)吸引
			2022-04-19:A*算法, 过程和Dijskra高度相处, 有到终点的预估函数, 只要预估值<=客观上最优距离,就是对的. 预估函数是一种吸引力: 1)合适的吸引力可以提升算法的速度; 2 ... 
- 2021-12-30:分裂问题。 一个数n,可以分裂成一个数组[n/2, n%2, n/2], 这个数组中哪个数不是1或者0,就继续分裂下去。 比如 n = 5,一开始分裂成[2, 1, 2], [2
			2021-12-30:分裂问题. 一个数n,可以分裂成一个数组[n/2, n%2, n/2], 这个数组中哪个数不是1或者0,就继续分裂下去. 比如 n = 5,一开始分裂成[2, 1, 2], [2 ... 
- 使用 MRKL 系统跨越神经符号鸿沟
			本文展示了自然语言处理的下一步发展--模块化推理.知识和语言( the Modular Reasoning, Knowledge and Language,简称为MRKL)系统以及LangChain和 ... 
- Docker入门与实战-Docker镜像的使用
			Docker入门与实战 二.Docker镜像的使用 1.获取镜像  命令:docker [image] pull image-name[:tag]  说明:  name为镜像仓库名称,严格来说, ... 
- vscode运行java输出至指定文件夹
			一.前言 最近呢,需要用vscode编写一点小的java程序,也就是单java文件,但是呢,我发现coderunner运行java,一个java文件编译出一个class文件,这也太乱了!不符合我简约的 ... 
- java中接口,抽象类,具体类之间的关系
			抽象类实现接口,具体类继承于抽象类 
- THM红队基础
			Red Team Fundamentals Learn the core components of a red team engagement, from threat intelligence t ... 
- Python-PyQt5的安装与简单使用
			一.安装 1.安装 PyQt5 和 PyQt5-tools pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5- ... 
