在Pandas Dataframe中迭代行的不同方法

  • Post category:Python

在pandas中迭代行通常有三种方法:

  1. 使用iterrows(迭代每一行)

  2. 使用itertuples(迭代每一行)

  3. 直接使用values属性(获取所有行的数值列表)

下面我们将介绍每种迭代方法的优缺点及示例代码。

方法一:iterrows

优点

  • 和处理csv文件一样逐行处理,非常直观,代码易懂

缺点

  • 迭代速度较慢,特别是在处理大型数据集时

  • 需要额外的开销来处理每行索引和数据,并转换为Series类型

下面是iterrows的用法示例:

import pandas as pd

# 准备数据
data = {'name':['Tom','Jack','Steve','Ricky'],'age':[28,34,29,42],'gender':['M','F','M','M']}

# 创建DataFrame
df = pd.DataFrame(data)

# 迭代DataFrame中每一行
for index, row in df.iterrows():
    print(row['name'], row['age'], row['gender'])

在这个例子中,我们使用iterrows方法迭代df的每一行,并分别访问每一行的’age’、’name’和’gender’列。

输出结果如下:

Tom 28 M
Jack 34 F
Steve 29 M
Ricky 42 M

方法二:itertuples

优点

  • 使用namedtuples,比Series类型更易于访问

  • 迭代速度相对较快

缺点

  • 需要额外的开销来处理每行索引和数据,并转换为namedtuples类型

下面是itertuples的用法示例:

import pandas as pd

# 准备数据
data = {'name':['Tom','Jack','Steve','Ricky'],'age':[28,34,29,42],'gender':['M','F','M','M']}

# 创建DataFrame
df = pd.DataFrame(data)

# 迭代DataFrame中每一行
for row in df.itertuples():
    print(row.name, row.age, row.gender)

在这个例子中,我们使用itertuples方法迭代df的每一行,并分别访问每一行的’age’、’name’和’gender’列。

输出结果如下:

Tom 28 M
Jack 34 F
Steve 29 M
Ricky 42 M

方法三:values

优点

  • 直接返回ndarray速度相对较快

缺点

  • 不利于代码可读性和可维护性

  • 由于不返回索引,因此需要额外的代码来跟踪索引信息

下面是values方法的用法示例:

import pandas as pd

# 准备数据
data = {'name':['Tom','Jack','Steve','Ricky'],'age':[28,34,29,42],'gender':['M','F','M','M']}

# 创建DataFrame
df = pd.DataFrame(data)

# 迭代DataFrame中每一行
for row in df.values:
    print(row[0], row[1], row[2])

在这个例子中,我们使用values方法访问df的所有行,并分别访问每一行的’age’、’name’和’gender’列。

输出结果如下:

Tom 28 M
Jack 34 F
Steve 29 M
Ricky 42 M

总之,在选择方法时,最好测试不同的方法,并根据数据量和性能的要求选择最佳方法。