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


猜你喜欢
- 1、XML 是什么?XML仅仅是一种数据存放格式,这种格式是一种文本(虽然XML规范中也提供了存放二进制数据的解决方案)。事实上有很多文本格
- VUE 集成LODOP插件打印Lodop、C-Lodop使用说明及样例http://www.lodop.net/LodopDemo.html
- 在python列表中,如果我们想要删除一个或者连续几个元素,可以使用del()方法,在numpy数组,如果想要删除元素,可以使用numpy.
- 可以查看: 代码如下:OPEN SYMMETRIC KEY 命令关于 对称密钥加密使用证书解密 CREATE MASTER KEY ENC
- 本文实例讲述了php计算给定日期所在周的开始日期和结束日期。分享给大家供大家参考,具体如下:<?php/** * 取得给定日期所在周的
- ini文件即Initialization File初始化文件,在应用程序及框架中常作为配置文件使用,是一种静态纯文本文件,使用记事本即可编辑
- 本文实例讲述了JS数组中对象去重操作。分享给大家供大家参考,具体如下:<!DOCTYPE html><html lang=
- 今天在部署一个实验系统的时候,报出下面这个错: Your 'max_allowed_packet' variable is
- 在python中除了print函数之外,len函数和type函数应该算是使用最频繁的API了,操作都比较简单。一.len函数简介返回对象的长
- 这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 上次我重新修改了UBB的转换后,又很多朋友反映日文显示的时候出错了。我在本地测试了一下,结果出现了 Invalid procedure ca
- Golang 是一门非常适合编写网络爬虫的语言,它有着高效的并发处理能力和丰富的网络编程库。下面是一个简单的 Golang 网络爬虫示例:p
- 什么是mock?mock在翻译过来有模拟的意思。它允许您用模拟对象替换您的系统的部分,并对它们已使用的方式进行断言。Mock通常是指,在测试
- 本文实例讲述了Python设计实现的计算器功能。分享给大家供大家参考,具体如下:通过利用PYTHON 设计处理计算器的功能如:1 - 2 *
- 一、Ajax简介Ajax被认为是(Asynchronous JavaScript and XML)的缩写,允许浏览器与服务器通信而无需刷新当
- 我们首先来看下python的全部代码,大家可以直接复制后测试:#-*- encoding: utf-8 -*- import l
- REPLACE语法REPLACE(String,from_str,to_str)即:将String中所有出现的from_str替换为to_s
- 场景:在页面中点击按钮,数量增加,值是存在store中的,点击事件,值没变。<script setup lang="ts&q
- 在《python深度学习》这本书中。一、21页mnist十分类导入数据集from keras.datasets import mnist(t
- tensorflow模型保存为saver = tf.train.Saver()函数,saver.save()保存模型,代码如下:import