Pandas Series.str_len() 函数
Series.str.len() 是 Pandas 中用于计算字符串长度的函数。
在数据处理过程中,我们经常需要了解字符串的长度信息,比如验证输入长度、筛选特定长度的文本、分析文本长度分布等。len() 函数可以返回每个字符串元素的字符数量。
单词释义:len 是 "length"(长度)的缩写,表示返回字符串的字符数。
基本语法与参数
str.len() 是 Series 的字符串访问器方法,因此你需要先有一个包含字符串的 Series,然后通过 .str 访问器来调用它。
语法格式
Series.str.len()
参数说明
- 参数:无参数。该函数不需要任何参数,直接调用即可。
函数说明
- 返回值:返回一个整数 Series,表示每个字符串的字符数量。
- 效果:计算 Series 中每个字符串元素的字符数(包括空格和特殊字符)。
- 注意:对于非字符串元素,会返回其字符串表示的长度。
实例
让我们通过一系列从简单到复杂的例子,彻底掌握 str.len() 的用法。
示例 1:基础用法 - 计算字符串长度
实例
import pandas as pd
# 创建一个包含不同长度字符串的 Series
s = pd.Series(['hello', 'runoob', 'python', 'ai', 'data'])
# 使用 str.len() 计算每个字符串的长度
result = s.str.len()
print("原始 Series:")
print(s)
print("n字符串长度:")
print(result)
# 创建一个包含不同长度字符串的 Series
s = pd.Series(['hello', 'runoob', 'python', 'ai', 'data'])
# 使用 str.len() 计算每个字符串的长度
result = s.str.len()
print("原始 Series:")
print(s)
print("n字符串长度:")
print(result)
输出结果:
原始 Series: 0 hello 1 runoob 2 python 3 ai 4 data dtype: object 字符串长度: 0 5 1 6 2 6 3 2 4 4
代码解析:
s.str.len()计算每个字符串的字符数。- 'hello' 有 5 个字符,返回 5。
- 'runoob' 有 6 个字符,返回 6。
- 空字符串返回长度为 0。
示例 2:包含空格的字符串长度
len() 会计算所有字符,包括空格。
实例
import pandas as pd
# 创建包含空格的 Series
s = pd.Series(['hello world', 'runoob python', 'a b c', ' space '])
# 计算字符串长度
result = s.str.len()
print("原始 Series:")
print(s)
print("n字符串长度(包括空格):")
print(result)
# 创建包含空格的 Series
s = pd.Series(['hello world', 'runoob python', 'a b c', ' space '])
# 计算字符串长度
result = s.str.len()
print("原始 Series:")
print(s)
print("n字符串长度(包括空格):")
print(result)
输出结果:
原始 Series: 0 hello world 1 runoob python 2 a b c 3 space dtype: object 字符串长度(包括空格): 0 11 1 13 2 5 3 8
代码解析:
- 'hello world' 有 11 个字符(包括中间的空格)。
- ' space ' 有 8 个字符(包括前后各两个空格)。
- 空格被计算为字符。
示例 3:筛选特定长度的字符串
len() 经常与布尔索引结合使用来筛选数据。
实例
import pandas as pd
# 创建一个产品名称 Series
products = pd.Series(['iPhone', 'Samsung Galaxy', 'MacBook Pro', 'iPad', 'Dell XPS'])
# 筛选长度大于 8 的产品
long_names = products[products.str.len() > 8]
# 筛选长度小于等于 5 的产品
short_names = products[products.str.len() <= 5]
print("所有产品:")
print(products)
print("n长度大于 8 的产品:")
print(long_names)
print("n长度小于等于 5 的产品:")
print(short_names)
# 创建一个产品名称 Series
products = pd.Series(['iPhone', 'Samsung Galaxy', 'MacBook Pro', 'iPad', 'Dell XPS'])
# 筛选长度大于 8 的产品
long_names = products[products.str.len() > 8]
# 筛选长度小于等于 5 的产品
short_names = products[products.str.len() <= 5]
print("所有产品:")
print(products)
print("n长度大于 8 的产品:")
print(long_names)
print("n长度小于等于 5 的产品:")
print(short_names)
输出结果:
所有产品: 0 iPhone 1 Samsung Galaxy 2 MacBook Pro 3 iPad 4 Dell XPS dtype: object 长度大于 8 的产品: 1 Samsung Galaxy 2 MacBook Pro 4 Dell XPS dtype: object 长度小于等于 5 的产品: 0 iPhone 3 iPad dtype: object
代码解析:
products.str.len() > 8返回布尔 Series,表示长度是否大于 8。- 使用布尔索引筛选出符合条件的产品名称。
- 这是数据筛选的常见操作。
示例 4:统计长度分布
len() 可以用于统计分析。
实例
import pandas as pd
# 创建一个包含句子长度的 Series
sentences = pd.Series([
'Hello',
'Hello world',
'Pandas is powerful',
'Data science with machine learning',
'AI'
])
# 计算每个句子的长度
lengths = sentences.str.len()
print("句子列表:")
print(sentences)
print("n每个句子的字符长度:")
print(lengths)
print("n统计信息:")
print(f"最短长度: {lengths.min()}")
print(f"最长长度: {lengths.max()}")
print(f"平均长度: {lengths.mean():.2f}")
print(f"总长度: {lengths.sum()}")
# 创建一个包含句子长度的 Series
sentences = pd.Series([
'Hello',
'Hello world',
'Pandas is powerful',
'Data science with machine learning',
'AI'
])
# 计算每个句子的长度
lengths = sentences.str.len()
print("句子列表:")
print(sentences)
print("n每个句子的字符长度:")
print(lengths)
print("n统计信息:")
print(f"最短长度: {lengths.min()}")
print(f"最长长度: {lengths.max()}")
print(f"平均长度: {lengths.mean():.2f}")
print(f"总长度: {lengths.sum()}")
输出结果:
句子列表: 0 Hello 1 Hello world 2 Pandas is powerful 3 Data science with machine learning 4 AI dtype: object 每个句子的字符长度: 0 5 1 11 2 18 3 29 4 2 dtype: int64 统计信息: 最短长度: 2 最长长度: 29 平均长度: 13.00 总长度: 65
代码解析:
lengths.min()返回最短的字符串长度。lengths.max()返回最长的字符串长度。lengths.mean()返回平均长度。lengths.sum()返回总字符数。
示例 5:处理混合类型数据
len() 也会计算数字等非字符串元素的字符串表示长度。
实例
import pandas as pd
import numpy as np
# 创建包含混合类型的 Series
s = pd.Series(['hello', 12345, 'runoob', np.nan, 'py'])
# 计算长度
result = s.str.len()
print("原始 Series:")
print(s)
print("n字符串长度:")
print(result)
import numpy as np
# 创建包含混合类型的 Series
s = pd.Series(['hello', 12345, 'runoob', np.nan, 'py'])
# 计算长度
result = s.str.len()
print("原始 Series:")
print(s)
print("n字符串长度:")
print(result)
输出结果:
原始 Series: 0 hello 1 12345 2 runoob 3 NaN 4 py dtype: object 字符串长度: 0 5.0 1 5.0 2 6.0 3 NaN 4 2.0
代码解析:
- 数字 12345 被转换为字符串 '12345',长度为 5。
- NaN 值返回 NaN(不会报错)。
- 返回的是 float 类型,因为 NaN 是 float。
示例 6:与 split 结合计算单词数
可以将 len() 与 split() 结合来计算单词数。
实例
import pandas as pd
# 创建一个包含句子的 Series
sentences = pd.Series([
'hello world',
'runoob python tutorial',
'pandas data analysis',
'machine learning'
])
# 先拆分再计算长度,得到单词数量
word_counts = sentences.str.split().str.len()
print("句子列表:")
print(sentences)
print("n单词数量:")
print(word_counts)
# 创建一个包含句子的 Series
sentences = pd.Series([
'hello world',
'runoob python tutorial',
'pandas data analysis',
'machine learning'
])
# 先拆分再计算长度,得到单词数量
word_counts = sentences.str.split().str.len()
print("句子列表:")
print(sentences)
print("n单词数量:")
print(word_counts)
输出结果:
句子列表: 0 hello world 1 runoob python tutorial 2 pandas data analysis 3 machine learning dtype: object 单词数量: 0 2 1 3 2 3 3 2 dtype: int64
代码解析:
str.split()将句子拆分成单词列表。.str.len()计算列表的长度(即单词数量)。- 这在统计文本的单词数时非常有用。
注意事项
str.len()计算的是字符数,而不是字节数。- 对于中文字符,每个汉字算一个字符。
- 空格、制表符等特殊字符也会被计算在内。
- 如果 Series 中包含 NaN 值,返回 NaN(而不是报错)。
- 对于非字符串元素(如数字),会先转换为字符串再计算长度。
- 该函数返回一个新的 Series,不会修改原始数据。

Pandas 常用函数