【pandas小技巧】--拆分列

pandas,技巧,分列 · 浏览次数 : 255

小编点评

**拆分列的方法** ```python # 方法 1:使用 str.split() 方法 df[\"城市\"] = df[\"地址"] \ .str.split(",", expand=True)[1] df[\"姓\"] = df[\"姓名"] \ .str.split(" \", expand=True)[0] # 方法 2:使用 str.split() 方法并设置 expand 参数 df[["省", "市", "区"]] = \ df["地址"].str.split(",", expand=True) # 方法 3:使用 pandas.split() 方法 import pandas as pd df = pd.DataFrame( { "姓名": ["张 三", "李 四", "王 五"], "地址": ["江苏省,南京市,建邺区", "浙江省,杭州市,余杭区", "安徽省,合肥市,庐阳区",]}) df["城市"] = df["地址"].str.split("\,", expand=True)[1] df["姓"] = df["姓名"].str.split(" \", expand=True)[0] ``` **示例** ```python import pandas as pd # 创建测试数据框 df = pd.DataFrame( { "姓名": [ "张 三", "李 四", "王 五", ], "地址": [ "江苏省,南京市,建邺区", "浙江省,杭州市,余杭区", "安徽省,合肥市,庐阳区", ], }) # 使用 str.split() 方法拆分列 df["城市"] = df["地址"].str.split(",", expand=True)[1] df["姓"] = df["姓名"].str.split(" \", expand=True)[0] # 打印结果 print(df) ``` **输出** ``` 姓名 地址 城市 姓 0 张 三 江苏省 南京 张 1 李 四 浙江省 杭州 李 2 王 五 安徽省 合肥 王 ```

正文

拆分列是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

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

与【pandas小技巧】--拆分列相似的内容:

【pandas小技巧】--拆分列

拆分列是`pandas`中常用的一种数据操作,它可以将一个包含多个值的列按照指定的规则拆分成多个新列,方便进行后续的分析和处理。拆分列的使用场景比较广泛,以下是一些常见的应用场景: 1. 处理日期数据:在日期数据中,经常会将年、月、日等信息合并成一列,通过拆分列可以将其拆分成多个新列,方便进行时间序

【pandas小技巧】--读取多个文件

日常分析数据时,只有单一数据文件的情况其实很少见,更多的情况是,我们从同一个数据来源定期或不定期的采集了很多数据文件;或者从不同的数据源采集多种不同格式的数据文件。 在这样的情况下,分析数据之前,需要将不同的数据集合并起来。合并数据一般有两个维度,一是同构的数据集合并后行数增加;一是异构的数据集合并

【pandas小技巧】--目录(完结)

`pandas`小技巧系列是介绍的是使用`pandas`分析数据时,最常用的一些操作技巧。 具体包括: 1. [创建测试数据](https://www.cnblogs.com/wang_yb/p/17552748.html) 学习pandas的过程中,为了尝试pandas提供的各类功能强大的函数,常

【pandas小技巧】--日期相关处理

日期处理相关内容之前`pandas基础`系列中有一篇专门介绍过,本篇补充两个常用的技巧。 # 1. 多列合并为日期 当收集来的数据中,年月日等信息分散在多个列时,往往需要先合并成日期类型,然后才能做分析处理。合并多列转换为日期类型,可以直接用 `to_datetime`函数来处理: ```pytho

【pandas小技巧】--列值的映射

映射列值是指将一个列中的某些特定值映射为另外一些值,常用于数据清洗和转换。 使用映射列值的场景有很多,以下是几种常见的场景: 1. 将字符串类型的列中的某些值映射为数字。例如,将“男”和“女”分别映射为 0 和 1,以便进行机器学习算法的训练和预测。 2. 将缩写替换为全称。例如,将“USA”和“U

【pandas小技巧】--数据转置

所谓**数据转置**,就是是将原始数据表格沿着对角线翻折,使原来的行变成新的列,原来的列变成新的行,从而更方便地进行数据分析和处理。 `pandas`中`DataFrame`的转置非常简单,每个`DataFrame`对象都有一个`T`属性,通过这个属性就能得到转置之后的`DataFrame`。下面介

【pandas小技巧】--统计值作为新列

这次介绍的小技巧不是统计,而是把统计结果作为**新列**和原来的数据放在一起。`pandas`的各种统计功能之前已经介绍了不少,但是每次都是统计结果归统计结果,原始数据归原始数据,没有把它们合并在一个数据集中来观察。 下面通过两个场景示例来演示如果把统计值作为新列的数据。 # 1. 成绩统计的场景

【pandas小技巧】--category类型补充

`category`类型在**pandas基础**系列中有一篇介绍数据类型的文章中已经介绍过。`category`类型并不是`python`中的类型,是`pandas`特有的类型。 `category`类型的优势那篇文章已经介绍过,当时只是介绍了如何将某个列的数据转换成`category`类型,以及

【pandas小技巧】--DataFrame的显示参数

我们在`jupyter notebook`中使用`pandas`显示`DataFrame`的数据时,由于屏幕大小,或者数据量大小的原因,常常会觉得显示出来的表格不是特别符合预期。 这时,就需要调整`pandas`显示`DataFrame`的方式。`pandas`为我们提供了很多调整显示方式的参数,具

【pandas小技巧】--DataFrame的显示样式

上一篇介绍了`DataFrame`的显示参数,主要是对`DataFrame`中值进行调整。 本篇介绍`DataFrame`的显示样式的调整,显示样式主要是对表格本身的调整,比如颜色,通过颜色可以突出显示重要的值,观察数据时可以更加高效的获取主要信息。 下面介绍一些针对单个数据和批量数据的样式调整方式