当我们在使用Pandas操作数据时,经常会遇到需要对数据中的字符串进行过滤的情况。Pandas提供了很多方法来方便地进行字符串过滤和搜索。通过5个例子,我们将学习Pandas中的字符串过滤和搜索技巧。
要检查某个字符串是否包含另一个字符串,我们可以使用.str.contains()
方法。示例如下:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'Dan', 'Ella', 'Frank'],
'gender': ['Female', 'Male', 'Male', 'Male', 'Female', 'Male'],
'age': [25, 32, 18, 47, 22, 19]}
df = pd.DataFrame(data)
# 判断name列中是否包含'li'字符串
result = df[df['name'].str.contains('li')]
print(result)
该代码将输出包含'li'字符串的DataFrame:
name gender age
0 Alice Female 25
3 Dan Male 47
如果要检查某个字符串是否与另一个字符串匹配,我们可以使用.str.match()
方法。示例如下:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'Dan', 'Ella', 'Frank'],
'gender': ['Female', 'Male', 'Male', 'Male', 'Female', 'Male'],
'age': [25, 32, 18, 47, 22, 19]}
df = pd.DataFrame(data)
# 判断name列中是否以'Alice'开头,并忽略大小写
result = df[df['name'].str.match('al', case=False)]
print(result)
该代码将输出以'al'开头的字符串的DataFrame:
name gender age
0 Alice Female 25
要替换字符串中的部分内容,我们可以使用.str.replace()
方法。示例如下:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'Dan', 'Ella', 'Frank'],
'gender': ['Female', 'Male', 'Male', 'Male', 'Female', 'Male'],
'age': [25, 32, 18, 47, 22, 19]}
df = pd.DataFrame(data)
# 将name列中的'A'替换为'O'
df['name'] = df['name'].str.replace('A', 'O')
print(df)
该代码将输出替换后的DataFrame:
name gender age
0 Olice Female 25
1 Bob Male 32
2 Charlie Male 18
3 Dan Male 47
4 Ella Female 22
5 Frank Male 19
如果要将字符串分割成多个部分,我们可以使用.str.split()
方法。该方法返回一个Series,可以通过.str.get()
方法访问单个元素。示例如下:
import pandas as pd
data = {'name': ['Alice Smith', 'Bob Brown', 'Charlie Wang', 'Dan Lee', 'Ella Zhang', 'Frank Xu'],
'gender': ['Female', 'Male', 'Male', 'Male', 'Female', 'Male'],
'age': [25, 32, 18, 47, 22, 19]}
df = pd.DataFrame(data)
# 将name列中的姓名分割成姓和名,并分别作为新的两列加入DataFrame
df[['last_name', 'first_name']] = df['name'].str.split(' ', expand=True)
print(df)
该代码将输出分割后的DataFrame:
name gender age last_name first_name
0 Alice Smith Female 25 Alice Smith
1 Bob Brown Male 32 Bob Brown
2 Charlie Wang Male 18 Charlie Wang
3 Dan Lee Male 47 Dan Lee
4 Ella Zhang Female 22 Ella Zhang
5 Frank Xu Male 19 Frank Xu
如果要从字符串中提取部分内容,我们可以使用.str.extract()
方法。该方法使用正则表达式进行匹配,并返回一个DataFrame。示例如下:
import pandas as pd
data = {'name': ['Alice Smith', 'Bob Brown', 'Charlie Wang', 'Dan Lee', 'Ella Zhang', 'Frank Xu'],
'gender': ['Female', 'Male', 'Male', 'Male', 'Female', 'Male'],
'age': [25, 32, 18, 47, 22, 19]}
df = pd.DataFrame(data)
# 从name列中提取姓和名
result = df['name'].str.extract('(\w+)\s(\w+)', expand=True)
print(result)
该代码将输出提取后的DataFrame:
0 1
0 Alice Smith
1 Bob Brown
2 Charlie Wang
3 Dan Lee
4 Ella Zhang
5 Frank Xu
以上是通过5个例子让你学会Pandas中的字符串过滤的完整攻略,希望能对你有所帮助。
本文链接:http://task.lmcjl.com/news/17263.html