python pandas分割DataFrame中的字符串及元组的方法实现
作者:侯小啾 发布时间:2022-09-10 09:30:14
标签:python,DataFrame,分割
1.使用str.split()方法
可以使用pandas 内置的 str.split() 方法实现分割字符串类型的数据,并将分割结果写入DataFrame中,以表格形式呈现。
语法:
Series.str.split(pat=None, n=-1, expand=False)
其中,pat是字符串或正则表达式,
n是一个整数数字,默认为-1。为0或-1时即为最大次数的分割。其他数值因数值而定。
expand为布尔类型,表示分割后是否转换为DataFrame。默认为False表示不转换。
首先准备一组DataFrame数据:
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
address = ['重庆 重庆市 南岸区 ',
'江苏省 苏州市 吴江区 吴江经济技术开发区亨通路',
'江苏省 苏州市 园区 苏州市工业园区唯亭镇阳澄湖大道维纳阳光花园',
'重庆 重庆市 南岸区 长生桥镇茶园新区长电路',
'安徽省 滁州市 明光市 三界镇中心街10001号',
'山东省 潍坊市 寿光市 圣城街道潍坊科技学院',
'吉林省 长春市 二道区 东盛街道彩虹风景',
'福建省 厦门市 湖里区 江头街道厦门市湖里区祥店福满园小区',
'山西省 吕梁市 离石区 滨河街道山西省吕梁市离石区后瓦师巷',
'河南省 濮阳市 华龙区 中原路街道中原路与107国道交叉口东',
'广东省 深圳市 宝安区 松岗街道松岗镇潭头第二工业区',
'河北省 石家庄市 辛集市 辛集镇辛集市新皮革城7期125楼',
'广东省 深圳市 宝安区 松岗街道松岗镇潭头第二工业区',
'贵州省 贵阳市 花溪区 党武镇师范大学师大超市',
'广东省 深圳市 福田区 沙头街道上沙龙秋村五十巷',
'福建省 福州市 闽侯县 上街镇福州闽侯上街国宾大道',
'湖北省 鄂州市 鄂城区 西山街道江碧路和馨居',
'上海 上海市 松江区',
'山东省 青岛市 市北区',
'山西省 晋中市 灵石县',
'浙江省 杭州市 余杭区']
df = pd.DataFrame()
df['address'] = address
print(df)
原数据示例如下:
将address分割成不同的地理级别,结果生成一个DataFrame对象:
print("=======================================================================")
df1 = df['address'].str.split(' ', expand=True)
print(df1)
结果如下:
最后将结果放入原DataFrame中。
df['省'] = series[0]
df['市'] = series[1]
df['区'] = series[2]
df = df[['省', '市', '区']]
print(df)
2.使用join()与split()方法结合
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
address = ['重庆 重庆市 南岸区 ',
'江苏省 苏州市 吴江区 吴江经济技术开发区亨通路',
'江苏省 苏州市 园区 苏州市工业园区唯亭镇阳澄湖大道维纳阳光花园',
'重庆 重庆市 南岸区 长生桥镇茶园新区长电路',
'安徽省 滁州市 明光市 三界镇中心街10001号',
'山东省 潍坊市 寿光市 圣城街道潍坊科技学院',
'吉林省 长春市 二道区 东盛街道彩虹风景',
'福建省 厦门市 湖里区 江头街道厦门市湖里区祥店福满园小区',
'山西省 吕梁市 离石区 滨河街道山西省吕梁市离石区后瓦师巷',
'河南省 濮阳市 华龙区 中原路街道中原路与107国道交叉口东',
'广东省 深圳市 宝安区 松岗街道松岗镇潭头第二工业区',
'河北省 石家庄市 辛集市 辛集镇辛集市新皮革城7期125楼',
'广东省 深圳市 宝安区 松岗街道松岗镇潭头第二工业区',
'贵州省 贵阳市 花溪区 党武镇师范大学师大超市',
'广东省 深圳市 福田区 沙头街道上沙龙秋村五十巷',
'福建省 福州市 闽侯县 上街镇福州闽侯上街国宾大道',
'湖北省 鄂州市 鄂城区 西山街道江碧路和馨居',
'上海 上海市 松江区',
'山东省 青岛市 市北区',
'山西省 晋中市 灵石县',
'浙江省 杭州市 余杭区']
df = pd.DataFrame()
df['address'] = address
df = df.join(df['address'].str.split(' ', expand=True))
print(df)
运行结果同上。
3. 使用apply方法分割元组
使用apply方法,将某个元素类型为元组的列,将其元组中的元素拆分为不同的列。
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]})
print(df)
df[['b1', 'b2']] = df['b'].apply(pd.Series)
print(df)
或者也可以这样写:
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]})
print(df)
df = df.join(df['b'].apply(pd.Series))
print(df)
参考资源: python数据分析从入门到精通 明日科技编著 清华大学出版社
来源:https://skylarkprogramming.blog.csdn.net/article/details/123353821
0
投稿
猜你喜欢
- 目录什么是引用计数怎么查看引用计数?对象的引用计数数组的引用计数关于内存泄露需要注意的地方总结什么是引用计数在PHP的数据结构中,引用计数就
- 最近碰到一个mysql5数据库的问题。就是一个标准的servlet/tomcat网络应用,后台使用mysql数据库。问题是待机一晚上后,第二
- 一、前言经过前面的两篇文章,整体工作已经完成了2/3了,剩下的1/3,将会在本片文章提及前面两步文章链接python实战之德州扑克第一步-发
- 复数是由一个实数和一个虚数组合构成,表示为:x+yj一个复数时一对有序浮点数(x,y),其中x是实数部分,y是虚数部分。Python语言中有
- 前言Python 一直以来被大家所诟病的一点就是执行速度慢,但不可否认的是 Python 依然是我们学习和工作中的一大利器。因此,我们对 P
- 作者:Lachlan Hunt概要网络是不断的进化的. 新的和有创意的网站每天都在出现, 从各方面都在冲击着HTML的边界. HTML 4来
- dim dr dr="2123123" dr1=Cint(dr) dr2=Clng(dr) 可参考如下函数说明: CIn
- 聚集索引,数据实际上是按顺序存储的,数据页就在索引页上。就好像参考手册将所有主题按顺序编排一样。一旦找到了所要搜索的数据,就完成了这次搜索,
- 全局变量是魔鬼。在YUI中,我们仅用两个全局变量:YAHOO和YAHOO_config。YUI的一切都是使用YAHOO对象级的成员或这个成员
- 本文介绍FCKeditor在Java环境下的使用方法。一、简介 功能:所见即所得,支持图片和Flash,工具栏可自由配置,使用简单兼容性:I
- 本文实例讲述了Python多线程原理与用法。分享给大家供大家参考,具体如下:先来看个栗子:下面来看一下I/O秘籍型的线程,举个栗子——爬虫,
- 以前经常吃公司旁边的食堂,人多,排队。夏天的时候,我们总要找一个靠窗口通风好的地方坐,没有空调只有风扇,风扇很多,开关都集中在一个地方,应该
- 本文主要是记录ubuntu 16.04下python环境配置,具体内容如下对于ubuntu 16.04,由于本身是自带python,这样就减
- 一、reversereverse()是python中列表的一个内置方法(在字典、字符串和元组中没有这个内置方法),用于列表中数据的反转例子:
- FTP服务的主动模式和被动模式在开始之前,先聊一下FTP的主动模式和被动模式,两者的区别 , 用两张图来表示可能会更加清晰一些:主动模式:主
- 比如:import linecacheprint linecache.getline('2.1_open.py&
- 这个问题用了我整整一晚上的时间才解决,希望有人遇到和我一样的时能少走些弯路。启动Django,服务器拒绝访问,可以尝试以下方法解决:1. 没
- 正则表达式(Regular Expression)为字符串模式匹配提供了一种高效、方便的方法。几乎所有高级语言都提供了对正则表达式的支持,或
- 请问如何在ASP中使用ADO调用Oracle的存储过程?我们可以在下面的代码里使用微软Oracle 的OLE DB Provider ,包括
- join 方法用于连接字符串数组 s = ['a', 'b', 'c', 'd