现在位置: 首页 > Pandas 教程 > 正文

Pandas Series.str_len() 函数

Pandas 常用函数 Pandas 常用函数


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:
0      hello
1     runoob
2     python
3        ai
4       data
dtype: object

字符串长度:
0    5
1    6
2    6
3    2
4    4

代码解析:

  1. s.str.len() 计算每个字符串的字符数。
  2. 'hello' 有 5 个字符,返回 5。
  3. 'runoob' 有 6 个字符,返回 6。
  4. 空字符串返回长度为 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:
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)

输出结果:

所有产品:
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()}")

输出结果:

句子列表:
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)

输出结果:

原始 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)

输出结果:

句子列表:
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 常用函数 Pandas 常用函数