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()
。