Python遍历pandas数据方法总结
一、使用 iterrows()
iterrows() 是 pandas 中最常用的遍历 DataFrame 行的方法之一。它将 DataFrame 的每一行作为一个 Series 进行迭代。
import pandas as pd
def iterrows_example():
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [85, 90, 88]}
df = pd.DataFrame(data)
print("Original DataFrame:")
print(df)
# 使用 iterrows() 遍历
for index, row in df.iterrows():
print(f"Index: {index}, Name: {row['Name']}, Age: {row['Age']}, Score: {row['Score']}")
调用函数
iterrows_example()
运行项目并下载源码
代码解释:
df.iterrows():生成一个迭代器,它为 DataFrame 中的每一行生成一个包含行索引 index 和行数据 row(作为 Series)的元组。
for index, row in df.iterrows():使用 for 循环遍历 DataFrame 的每一行。
row['Name']:通过列名从 row 这个 Series 中获取元素。
二、使用 itertuples()
itertuples() 会将 DataFrame 的每一行作为一个命名元组进行迭代,相比于 iterrows(),它通常更快,因为元组的访问比 Series 更快。
import pandas as pd
def itertuples_example():
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [85, 90, 88]}
df = pd.DataFrame(data)
print("Original DataFrame:")
print(df)
# 使用 itertuples() 遍历
for row in df.itertuples():
print(f"Index: {row.Index}, Name: {row.Name}, Age: {row.Age}, Score: {row.Score}")
调用函数
itertuples_example()
运行项目并下载源码
代码解释:
df.itertuples():生成一个迭代器,它为 DataFrame 中的每一行生成一个命名元组。
for row in df.itertuples():使用 for 循环遍历 DataFrame 的每一行。
row.Index、row.Name 等:通过命名元组的属性访问元素,这里 Index 是默认的索引属性,后面是 DataFrame 的列名。
三、使用 iteritems()
iteritems() 是对 DataFrame 的列进行迭代,将每一列作为一个 Series 进行迭代。
import pandas as pd
def iteritems_example():
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [85, 90, 88]}
df = pd.DataFrame(data)
print("Original DataFrame:")
print(df)
# 使用 iteritems() 遍历
for column_name, column_data in df.iteritems():
print(f"Column: {column_name}")
print(column_data)
调用函数
iteritems_example()
运行项目并下载源码
代码解释:
df.iteritems():生成一个迭代器,它为 DataFrame 中的每一列生成一个包含列名 column_name 和列数据 column_data(作为 Series)的元组。
for column_name, column_data in df.iteritems():使用 for 循环遍历 DataFrame 的每一列。
四、使用 apply()
apply() 可以将函数应用于 DataFrame 的元素、行或列。
import pandas as pd
def apply_example():
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [85, 90, 88]}
df = pd.DataFrame(data)
print("Original DataFrame:")
print(df)
# 使用 apply() 对行进行操作
def process_row(row):
return f"{row['Name']} is {row['Age']} years old and scored {row['Score']}"
result = df.apply(process_row, axis=1)
print("\nResult of apply() on rows:")
print(result)
调用函数
apply_example()
运行项目并下载源码
代码解释:
def process_row(row):定义一个处理行的函数。
df.apply(process_row, axis=1):将 process_row 函数应用于 DataFrame 的每一行(axis=1 表示按行操作)。
五、使用 applymap()
applymap() 用于对 DataFrame 的每个元素应用一个函数,通常用于元素级别的操作。
import pandas as pd
def applymap_example():
# 创建一个示例 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
print("Original DataFrame:")
print(df)
# 使用 applymap() 对元素进行操作
def square(x):
return x ** 2
result = df.applymap(square)
print("\nResult of applymap()😊
print(result)
调用函数
applymap_example()
运行项目并下载源码
代码解释:
def square(x):定义一个对元素进行平方操作的函数。
df.applymap(square):将 square 函数应用于 DataFrame 的每个元素。
六、使用 np.ndenumerate() 结合 values 属性
如果需要同时访问 DataFrame 的元素及其索引,可以将 numpy 的 ndenumerate() 与 DataFrame 的 values 属性结合使用。
import pandas as pd
import numpy as np
def ndenumerate_example():
# 创建一个示例 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
print("Original DataFrame:")
print(df)
# 使用 np.ndenumerate() 结合 values 属性遍历
values = df.values
for (i, j), value in np.ndenumerate(values):
print(f"Row {i}, Column {j}: {value}")
调用函数
ndenumerate_example()
运行项目并下载源码
代码解释:
df.values:将 DataFrame 转换为 numpy 数组。
np.ndenumerate(values):生成一个迭代器,为 numpy 数组中的每个元素生成一个包含元素索引 (i, j) 和元素值 value 的元组。
在选择遍历方法时,要根据具体需求和性能考虑进行选择。对于逐行操作,itertuples() 通常性能较好;对于元素级别的操作,根据情况选择 applymap() 或 apply();对于列操作,可使用 iteritems() 。
浙公网安备 33010602011771号