Dataframe Series 遍历修改实战
Dataframe Series 是 Pandas 库中的核心数据结构之一,常用于一维数据操作。本文将直接切入主题,通过实例详解如何遍历 Series 并进行修改,涵盖关键步骤、命令示例及实用技巧。
操作步骤与命令示例
以下为遍历 Series 并修改值的完整流程:
- 创建 Series 对象
- 使用循环遍历 Series 元素
- 根据条件修改值
import pandas as pd
# 创建示例 Series
data = pd.Series([10, 20, 30, 40, 50])
print("原始数据:")
print(data)
# 方法一:使用 iteritems() 遍历并修改
for index, value in data.iteritems():
if value > 25:
data[index] = value * 2
print("\n修改后数据 (iteritems):")
print(data)
# 方法二:使用 apply() 函数修改
def modify(x):
return x * 2 if x > 25 else x
data = data.apply(modify)
print("\n修改后数据 (apply):")
print(data)
# 方法三:使用向量化操作修改
data[data > 25] *= 2
print("\n修改后数据 (向量化):")
print(data)
关键命令解释
- iteritems():返回 (索引, 值) 元组迭代器,适用于需要知道索引的情况
- apply():对 Series 应用函数,更灵活但可能稍慢
- 向量化操作:使用布尔索引直接修改,效率最高
注意事项
- 修改 Series 时,建议使用原始 Series 的副本避免意外更改
- 向量化操作通常比循环快 5-10 倍
- 复杂条件修改时,优先考虑布尔索引而非循环
实用技巧
- 使用 where() 函数进行条件赋值
- 结合 map() 函数进行快速映射修改
- 对于大型数据,考虑使用 numba 库加速循环
# 使用 where() 修改
data = data.where(data <= 25, data * 2)
print("\n使用 where() 修改:")
print(data)
# 使用 map() 修改
mapping = {10: 100, 20: 200, 30: 300}
data = data.map(mapping).fillna(data)
print("\n使用 map() 修改:")
print(data)