详解 Pandas 的常用字符串函数

一、Pandas 常用字符串方法

方法名说明
startswith()判断以某个字符开头
endswith()判断以某个字符结束
repeat()将字符串重复指定次数
split()使用指定字符分割字符串(默认为逗号),结果为一个列表
replace()以指定字符串替换指定部分
find()查找某个字符的索引,若不存在则返回-1
lower()所有字符转成小写
upper()所有字符转成大写
title()每一个单词的首字母大写
capitalize()第一个字母大写
strip()/lstrip()/rstrip()删除前后空格/删除左边空格/删除右边空格
contains()是否包含某个字符串
len()字符串长度
zfill()使用0填充到指定字符串长度,只从左边开始填充
pad()使用指定的字符填充到指定字符串长度,只能使用一个字符填充,默认从左开始填充,side 参数指定填充方向,width 参数指定填充长度,fillchar 参数指定填充字符
match()使用正则表达式匹配

二、实操案例

1. 数据准备

import pandas as pd

df = pd.DataFrame({
    "name": ["张三", "李四"],
    "fav": ["篮球,足球,看书", "吉他,健身,刷剧"],
    "language": ["Java/Python/SQL", "C#/Go/Scala"],
    "english_name": ["tom", "JERRY"],
    "slogan":["nothing is impossible", "keep it going"]
})

print(df)
  name       fav         language english_name                 slogan
0   张三  篮球,足球,看书  Java/Python/SQL          tom  nothing is impossible
1   李四  吉他,健身,刷剧      C#/Go/Scala        JERRY          keep it going

2. 基本使用

# startswith()/endswith():判断以某个字符开头/结束
print(df["language"].str.startswith("J"))
print(df["language"].str.endswith("a"))
0     True
1    False
Name: language, dtype: bool
0    False
1     True
Name: language, dtype: bool
# repeat():将字符串重复指定次数
print(df["english_name"].str.repeat(3))
0          tomtomtom
1    JERRYJERRYJERRY
Name: english_name, dtype: object
# split():使用指定字符分割字符串(默认为逗号),结果为一个列表
print(df["fav"].str.split())
print(df["language"].str.split("/"))
0    [篮球,足球,看书]
1    [吉他,健身,刷剧]
Name: fav, dtype: object
0    [Java, Python, SQL]
1        [C#, Go, Scala]
Name: language, dtype: object
# replace():以指定字符串替换指定部分
print(df["language"].str.replace("C#", "C++"))
0    Java/Python/SQL
1       C++/Go/Scala
Name: language, dtype: object
# find():查找某个字符的索引,若不存在则返回-1
print(df["fav"].str.find("足球"))
0    3
1   -1
Name: fav, dtype: int64
# lower()/upper():所有字符转成小写/大写
print(df["english_name"].str.lower())
print(df["english_name"].str.upper())
0      tom
1    jerry
Name: english_name, dtype: object
0      TOM
1    JERRY
Name: english_name, dtype: object
# title():每一个单词的首字母大写
print(df["slogan"].str.title())
0    Nothing Is Impossible
1            Keep It Going
Name: slogan, dtype: object
# capitalize():第一个字母大写
print(df["slogan"].str.capitalize())
0    Nothing is impossible
1            Keep it going
Name: slogan, dtype: object
# contains():是否包含某个字符串
print(df["language"].str.contains("thon"))
0     True
1    False
Name: language, dtype: bool
# len():字符串长度
print(df["slogan"].str.len())
0    21
1    13
Name: slogan, dtype: int64
# zfill():使用0填充到指定字符串长度,只从左边开始填充
print(df["name"].str.zfill(5))
0    000张三
1    000李四
Name: name, dtype: object
# pad():将每一个元素都用指定的字符填充,只能使用一个字符填充
print(df["name"].str.pad(width=8, fillchar="*"))
print(df["name"].str.pad(width=7, fillchar="*", side="both"))
print(df["english_name"].str.pad(width=7, fillchar="-", side="right"))
0    ******张三
1    ******李四
Name: name, dtype: object
0    ***张三**
1    ***李四**
Name: name, dtype: object
0    tom----
1    JERRY--
Name: english_name, dtype: object
Pandas是用于数据处理和数据分析的Python库。其中,`filter`函数是用于筛选数据的常用函数之一。它允许按照指定条件从数据集中筛选特定的行或列。以下是filter函数的用法详解。 ## 语法 `filter`函数的语法如下: ``` DataFrame.filter(items=None, like=None, regex=None, axis=None) ``` `filter`函数有四个参数: - items: 指定要筛选的列,可以传递列名的列表或元组。 - like: 通过传递包含特定字符串字符串,筛选列名。 - regex: 通过传递正则表达式,筛选列名。 - axis: 指定沿着哪个轴筛选。0表示按行筛选,1表示按列筛选。默认值为0。 ## 示例 假设我们有以下的数据: ``` import pandas as pd data = {'name': ['Bobby', 'Alice', 'Cathy', 'Donald', 'Eric', 'Fred'], 'sex': ['M', 'F', 'F', 'M', 'M', 'M'], 'age': [22, 23, 25, 27, 31, 33], 'salary': [2000, 2500, 3000, 3500, 4000, 4500]} df = pd.DataFrame(data) ``` | name | sex | age | salary | |------|-----|-----|--------| | Bobby| M | 22 | 2000 | | Alice| F | 23 | 2500 | | Cathy| F | 25 | 3000 | | Donald| M | 27 | 3500 | | Eric| M | 31 | 4000 | | Fred| M | 33 | 4500 | 现在,我们尝试使用`filter`函数从数据集中筛选特定的行或列。 ### 筛选行 我们可以使用`filter`函数,按行筛选数据。 例1. 筛选名字包含'A'的行: ``` df.filter(like='A', axis=0) ``` 输出: | name | sex | age | salary | |------|-----|-----|--------| | Alice| F | 23 | 2500 | 例2. 筛选年龄大于30的行: ``` df.filter(items=['age', 'salary'], axis=1)[df['age']>30] ``` 输出: | age | salary | |-----|--------| | 31 | 4000 | | 33 | 4500 | ### 筛选列 我们还可以使用`filter`函数,按列筛选数据。 例1. 筛选名字和工资列: ``` df.filter(['name', 'salary']) ``` 输出: | name | salary | |------|--------| | Bobby|2000 | | Alice|2500 | | Cathy|3000 | | Donald|3500 | | Eric |4000 | | Fred |4500 | 例2. 通过正则表达式筛选名字和工资列: ``` df.filter(regex='.*a.*') ``` 输出: | name | salary | |------|--------| | Bobby|2000 | | Cathy|3000 | 以上是使用`filter`函数进行数据筛选的常见用法。使用`filter`函数可以方便地对数据集进行列选择或行选择,提高数据处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值