在Python-Pandas中对数据框架的所有或某些列进行循环或迭代

  • Post category:Python

在 Python-Pandas 中,可以通过 for 循环来对数据框架 DataFrame 中的所有或某些列进行迭代。具体实现方法主要有两种:通过 iteritems() 方法和 iterrows() 方法。

1. iteritems() 方法

iteritems() 方法可以返回一个元组,元组的第一个元素是每个列名,第二个元素是这个列的所有值(Series)。

示例代码如下:

import pandas as pd

# 创建数据框架
df = pd.DataFrame({
    'name': ['Tom', 'Jack', 'Steve'],
    'age': [18, 21, 19],
    'gender': ['M', 'M', 'M']})

# 迭代每个列
for col_name, col_values in df.iteritems():
    print('Column Name:', col_name)
    print('Column Values:', col_values.values)

输出结果:

Column Name: name
Column Values: ['Tom' 'Jack' 'Steve']
Column Name: age
Column Values: [18 21 19]
Column Name: gender
Column Values: ['M' 'M' 'M']

在上面的代码中,使用 iteritems() 方法遍历了数据框架中的每个列,每个列都是由一个元组(元素一是列名,元素二是该列值的 Series)表示的。 注意:每个列都是一个 Series 类型。

2. iterrows() 方法

iterrows() 方法用于遍历数据框架 DataFrame 的每一行。遍历时返回的是每一行的索引和值。

示例代码如下:

import pandas as pd

# 创建数据框架
df = pd.DataFrame({
    'name': ['Tom', 'Jack', 'Steve'],
    'age': [18, 21, 19],
    'gender': ['M', 'M', 'M']})

# 迭代每一行
for index, row in df.iterrows():
    print('Row Index:', index)
    print('Row Values:', row.values)

输出结果:

Row Index: 0
Row Values: ['Tom' 18 'M']
Row Index: 1
Row Values: ['Jack' 21 'M']
Row Index: 2
Row Values: ['Steve' 19 'M']

在上面的代码中,使用 iterrows() 方法遍历了数据框架中的每一行,每行都是由一个元组(元素一是该行的索引,元素二是该行值的 Series)表示的。

细节说明:

  • 当使用 iteritems() 方法遍历数据框架中的所有列时,访问的是每个列的 Series 类型,可以通过 values 属性来访问 Series 中的每个元素。
  • 同样的,当使用 iterrows() 方法遍历数据框架中的所有行时,访问的是每行的 Series 类型,也可以通过 values 属性来访问 Series 中的每个元素。

当需要对数据框架中某些特定的列进行迭代时,可以使用 loc 或 iloc 方法来进行筛选。例如,

import pandas as pd

# 创建数据框架
df = pd.DataFrame({
    'name': ['Tom', 'Jack', 'Steve'],
    'age': [18, 21, 19],
    'gender': ['M', 'M', 'M']})

# 迭代数据框架中的 name 和 gender 列
for col_name, col_values in df.loc[:, ['name', 'gender']].iteritems():
    print('Column Name:', col_name)
    print('Column Values:', col_values.values)

输出结果:

Column Name: name
Column Values: ['Tom' 'Jack' 'Steve']
Column Name: gender
Column Values: ['M' 'M' 'M']

上述代码中使用 loc 方法来选择‘name’和‘gender’列,然后再使用 iteritems() 方法来遍历这两列。这样可以针对特定的列进行迭代。