在 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() 方法来遍历这两列。这样可以针对特定的列进行迭代。