0

0

使用 Pandas 高效为 Series 赋值序列号

聖光之護

聖光之護

发布时间:2025-11-02 14:17:01

|

773人浏览过

|

来源于php中文网

原创

使用 Pandas 高效为 Series 赋值序列号

本教程将探讨在 pandas 中如何以“pandas 方式”高效地将 series 的现有值替换为从1开始的递增序列号。我们将介绍利用 `range` 或 `numpy.arange` 进行直接赋值的简洁方法,避免使用传统的循环迭代,从而提升代码的可读性和执行效率,使数据操作更符合 pandas 的设计哲学。

在数据处理和分析中,我们经常需要对 Pandas Series 中的值进行批量修改。一个常见的需求是将 Series 的现有值替换为一系列递增的序列号,例如 1, 2, 3...。对于初学者而言,可能会习惯性地采用 Python 的循环结构来逐个修改 Series 元素,但这并非处理 Pandas 数据的最佳实践。

循环迭代的局限性

考虑以下初始化一个 Pandas Series 的例子:

import pandas as pd
import numpy as np

rank = pd.Series(data=[161.140890, 146.989804, 133.589100, 131.220764, 124124.506911],
                 index=['SB', 'EKDKQ', 'APD', 'DIS', 'MDR'])
print("原始 Series:")
print(rank)

输出:

原始 Series:
SB       161.140890
EKDKQ    146.989804
APD      133.589100
DIS      131.220764
MDR      124124.506911
dtype: float64

如果使用传统的循环方式来替换值,代码可能如下所示:

x = 1
for i, v in rank.items():
    rank.loc[i] = x
    x += 1
print("\n使用循环替换后的 Series:")
print(rank)

输出:

使用循环替换后的 Series:
SB       1.0
EKDKQ    2.0
APD      3.0
DIS      4.0
MDR      5.0
dtype: float64

虽然这段代码实现了目标,但它本质上是 Python 原生循环,而非充分利用 Pandas 或 NumPy 的向量化操作能力。对于大型 Series,这种逐元素迭代的方式效率较低,且代码风格不够“Pandas”。

采用“Pandas 方式”进行高效赋值

Pandas 的核心优势在于其基于 NumPy 的向量化操作,能够以极高的效率处理整个数组或 Series。要将 Series 的值替换为序列号,我们应该生成一个序列,然后直接将其赋值给 Series。

方法一:利用 range 函数直接赋值

Python 内置的 range() 函数可以生成一个整数序列。结合 Series 的 size 属性(表示 Series 中元素的数量),我们可以轻松生成所需长度的序列。

bee餐饮点餐外卖小程序
bee餐饮点餐外卖小程序

bee餐饮点餐外卖小程序是针对餐饮行业推出的一套完整的餐饮解决方案,实现了用户在线点餐下单、外卖、叫号排队、支付、配送等功能,完美的使餐饮行业更高效便捷!功能演示:1、桌号管理登录后台,左侧菜单 “桌号管理”,添加并管理你的桌号信息,添加以后在列表你将可以看到 ID 和 密钥,这两个数据用来生成桌子的二维码2、生成桌子二维码例如上面的ID为 308,密钥为 d3PiIY,那么现在去左侧菜单微信设置

下载
# 重新初始化 Series 以便演示
rank = pd.Series(data=[161.140890, 146.989804, 133.589100, 131.220764, 124124.506911],
                 index=['SB', 'EKDKQ', 'APD', 'DIS', 'MDR'])

# 使用 range 生成序列并直接赋值
# range(start, stop) 会生成从 start 到 stop-1 的序列
# rank.size 获取 Series 的元素数量,因此我们需要 rank.size + 1 来包含最后一个数字
rank[:] = range(1, rank.size + 1)

print("\n使用 range 直接赋值后的 Series:")
print(rank)

输出:

使用 range 直接赋值后的 Series:
SB       1.0
EKDKQ    2.0
APD      3.0
DIS      4.0
MDR      5.0
dtype: float64

这里,rank[:] 表示选择 Series 的所有元素,并将其整体替换为 range(1, rank.size + 1) 生成的序列。这种操作是原地修改,效率远高于循环。

方法二:利用 numpy.arange 函数直接赋值

NumPy 库提供了功能更强大的 arange() 函数,与 range() 类似,但可以处理浮点数步长,并且返回的是 NumPy 数组,与 Pandas 结合更紧密。

# 重新初始化 Series 以便演示
rank = pd.Series(data=[161.140890, 146.989804, 133.589100, 131.220764, 124124.506911],
                 index=['SB', 'EKDKQ', 'APD', 'DIS', 'MDR'])

# 使用 numpy.arange 生成序列并直接赋值
# np.arange(start, stop) 同样生成从 start 到 stop-1 的序列
rank[:] = np.arange(1, rank.size + 1)

print("\n使用 numpy.arange 直接赋值后的 Series:")
print(rank)

输出:

使用 numpy.arange 直接赋值后的 Series:
SB       1.0
EKDKQ    2.0
APD      3.0
DIS      4.0
MDR      5.0
dtype: float64

numpy.arange 的用法与 range 类似,但在处理数值序列时提供了更大的灵活性。由于 Pandas Series 的底层数据结构通常是 NumPy 数组,使用 numpy.arange 生成的数组可以直接高效地赋值给 Series。

优势与最佳实践

  • 效率显著提升: range 和 numpy.arange 结合直接赋值是向量化操作,避免了 Python 解释器的循环开销,底层通过 C 语言或优化过的 NumPy 代码执行,效率远高于显式循环,尤其对于大数据集。
  • 代码简洁明了: 一行代码即可完成替换,提高了代码的可读性和维护性。
  • 符合 Pandas 风格: 这种方式充分利用了 Pandas 的设计哲学,即通过向量化操作来处理数据,是处理 Pandas 数据的推荐方式。
  • 原地修改: rank[:] = ... 这种赋值方式会直接修改原有的 Series 对象,而不是创建一个新的 Series。如果需要保留原始 Series,应先进行复制(例如 rank.copy())。

在选择 range 或 numpy.arange 时,对于简单的整数序列生成,两者性能差异不大。如果项目中已经引入了 NumPy,或者未来可能需要生成更复杂的数值序列(如浮点数步长),那么 numpy.arange 可能是更一致的选择。

总结

将 Pandas Series 的值替换为序列号时,应避免使用传统的 Python 循环,而是采用向量化操作。通过利用 Python 内置的 range() 函数或 NumPy 提供的 numpy.arange() 函数生成序列,然后直接赋值给 Series,可以实现高效、简洁且符合 Pandas 风格的数据操作。这种方法不仅提升了代码执行效率,也增强了代码的可读性和可维护性,是处理 Pandas 数据的最佳实践之一。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

778

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

684

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

769

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

739

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1445

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

571

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

580

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

751

2023.08.11

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

0

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 21.7万人学习

Django 教程
Django 教程

共28课时 | 3.5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号