pandas 将某一列转换为字符类型_Pandas对文本数据处理

本文介绍了如何使用Pandas库对文本数据进行处理,包括使用str属性进行字符串操作,如转换大小写、统计长度、替换和分割字符串;通过get_dummies方法生成哑变量;以及提取子串等。示例涵盖了英雄数据集,展示了如何在实际场景中应用这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3803449635f696b0605eaaa61fd6ffd5.png

在处理数据的时候,对数值型的数据处理还是比较方便的,但是有时候数值型数据出现问题后就会比较头痛了,因为文本数据的排列组合可是有很多很多的,今天我们就学习一下如何对文本数据进行处理,这样我们接下来在工作中遇到了这些情况就可以少掉一下头发啦。

4ba204ccf78e0500d5856b8d4e8549ec.png

一、str属性

文本数据也就是我们常说的字符串,pandas为series提供了str属性,通过它可以方便对每个元素进行操作。

77b3dcd62997c068129ab23c1be96f4a.png

为了防止数据被弄坏,我们先预留一个备份以防万一。

af7eb7c5ddac4f89d977550f2b1826a7.png

这里我们是不能使用backup_user_info = user_info的因为这样的话一个更改另外一个也会更改。

在之前我们也已经了解过,在对series中每个元素处理时,我们可以使用map或apply方法,比如我们想把星球列下面的地球和外星转换为英文,可以使用下面的方式。

ddbc67e8294eac0acbaba8f9c445bdbe.png

这时候我们在将表恢复成原来的样子。

bf841ecd44a67c17a1c1dcd389f37ee8.png
  • 将哪个星球列下的星球改为大写的英文后再改为小写

首先更改为英文

3b6e41d788c0a672bf1372a05f65ccd2.png

然后设置一个函数,将星球改为大写,原理为upper()方法

8487ce156f9437c591f1e63a090dc58a.png

然后在设置为小写,原理为lower方法

b6c57481a460ae6536a88789905e7cb5.png
  • 给英雄们的身高加上一个单位
87198df2fbcf41e338adc6c56b541b5f.png

我们通过str属性来访问之后用到的方法名与 Python 内置的字符串的方法名一样。并且能够自动排除缺失值。 我们再来试试其他一些方法。例如,统计每个字符串的长度。

4b0d8752e3a8dadf63badef012b189f3.png
  • 将cm替换成空白的字符串
f64cd2b1e3e5279265c2d36c6a72eb41.png
  • 将身高列的元素类型转换为整数型
0eaf45d9e4cfa342c937fac488b38c2f.png
  • 生成一个新的列,列名为姓名的长度,元素为英雄姓名的长度(len方法)
35da118e73d227ce344701930cb866b9.png
  • 查看表的元素类型
56a28711836bdb7b677dd39d4823111d.png
  • 将年不年轻列的中的中年属性更改为中老年属性
019aa8b7986004f8bba5473f9659ede2.png

查看城市列中每个元素有几个字

b10cae1bcb62898ee174f6e45c164556.png
  • 查看年不年轻列中每个元素是否有轻这个字符串
3233f664e433ae4617ebf7ceeff51bb6.png

二、替换和分隔

使用.srt属性也支持替换与分割操作。先来看下替换操作,例如:将大写的R转换为小写的r。

586e6569243ac2c388654249befb0062.png
  • 将列中的数据进行分隔
2997c65bfb7f59790110e96b44a19fea.png

将是否年轻按年进行分隔,结果如上所述。

分割列表中的元素可以使用 get 或 [] 符号进行访问:

c0443fdc7156c36e8ab25f3974ede934.png

比如说电影的主演有很多人, 可能是用逗号, 或者/ 进行分割, 这是可以用这种方法转换成列表

  • 在表中添加一列英雄的爱人列
7e1c5abbc8647608933dff624f914e7a.png
dbf49431b910d3d3a551ad67e15dd07f.png

将爱人列以,号分隔

b13dfecf8cd76fc11800326f8bdf5ed0.png

这时候就可以让某一行的这个元素以列表表现出来。

263a89e73c0ad42a9b53f0d3723cfedb.png

将索引列改为英雄姓名,并查看蜘蛛侠和灭霸的爱人

de2047a180b2642ed1884b9089d2b27c.png

三、提取子串

既然是在操作字符串,很自然的大家可能会想到是否可以从一个长的字符串中提取出子串。答案是可以的。

1、提取第一个匹配的子串

extract方法接受一个正则表达式并至少包含一个捕获组,指定参数 expand=True可以保证每次都返回DataFrame。例如,现在想要匹配空字符串前面的所有的字母,可以使用如下操作:

  • 查看哪位英雄的所在的星球包括E这个字符串
8f02bf2ff19b8bc52a9e5d70ff9438dd.png
  • 查看哪位英雄所在的城市包括纽这个字符串
23bb65fc1100081f2f69382f55e8ee1d.png

四、生成哑变量

首先我们先了解一下什么是哑变量:

哑变量原名为虚拟变量 ( Dummy Variables) 又称虚设变量、名义变量或哑,用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1。引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到两个方程的作用,而且接近现实。

在pandas中我们可以通过get_dummies 方法可以将字符串转为哑变量,sep 参数是指定哑变量之间的分隔符。

d25bb1792644fad66ee486000c8bb2ee.png
  • 对英雄姓名进行哑变量转换
c4c66a9322e04a4ffa4eb700a86563eb.png

从结果可以看出,第0行的英雄姓名是蜘蛛侠,第1行的英雄姓名是灭霸,哑变量转换就是将每一个选择匹配哪一行的数据。

  • 对那个星球进行哑变量转换
796f93cbc4b9a171a92df7350ee1ac73.png

从结果可以看出,在地球的英雄是第0、2、3、4、6行的,对应的英雄名称为(蜘蛛侠、奇异博士、钢铁侠、蝙蝠侠、黑寡妇)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值