我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文描述对dataframe的一列数据进行有规则的拆分的方式方法,用到的函数方法就是.split()。没想到在php中已经消失的split(),又在python里面出现了。哈哈!

苏南大叔:python教程,如何拆分dataframe一列数据为多列数据? - dataframe拆分数据,一列变成多列数据
python教程,如何拆分dataframe一列数据为多列数据?(图5-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验。测试环境:win10python@3.11.0numpy@1.24.2pandas@1.5.3

需求描述

本文要处理的dataframe类型数据如下:

import pandas as pd

df = pd.DataFrame([['黑猫 老许', '3岁|15斤'],
                   ['黄狗 虎子', '5岁|25斤'], ],
                  columns=['属主', '属性'])

苏南大叔:python教程,如何拆分dataframe一列数据为多列数据? - 初始数据待测试
python教程,如何拆分dataframe一列数据为多列数据?(图5-2)

可以看到,数据是有规律的,并且所有的数据都符合这个规律(否则代码报错)。第一列数据将根据空格进行拆分,第二列数据将根据字符|进行拆分。

拆分的的方法有两个,为了方便演示,每一列使用了一种拆分方式。

苏南大叔:python教程,如何拆分dataframe一列数据为多列数据? - dataframe-split-code
python教程,如何拆分dataframe一列数据为多列数据?(图5-3)

方案一,df[字段].str.split()【推荐】

df[['种类', '姓名']] = df["属主"].str.split(' ', expand=True)
df.drop(axis=1, columns='属主', inplace=True)
print(df)

输出:

       属性  种类  姓名
0  3岁|15斤  黑猫  老许
1  5岁|25斤  黄狗  虎子

苏南大叔:python教程,如何拆分dataframe一列数据为多列数据? - dataframe-split-result-1
python教程,如何拆分dataframe一列数据为多列数据?(图5-4)

方案二,df[字段].map(lambda r:r.split('|')[数字索引])

df['年龄'] = df['属性'].map(lambda r: r.split('|')[0])
df['体重'] = df['属性'].map(lambda r: r.split('|')[1])
df.drop(axis=1, columns='属性', inplace=True)
print(df)

输出:

   种类  姓名  年龄  体重
0  黑猫  老许  3岁   15斤
1  黄狗  虎子  5岁   25斤

苏南大叔:python教程,如何拆分dataframe一列数据为多列数据? - dataframe-split-result-2
python教程,如何拆分dataframe一列数据为多列数据?(图5-5)

相关文章

结束语

个人觉得还是第一种方案比较好一些,map()+lambda有些长不方便。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python