1. pandas按行或者按列迭代遍历DataFrame

DataFrame是二维数据,因此,大部分操作都需要考虑两个维度,行和列,对一个DataFrame迭代遍历时,可以一列一列的遍历,也可以一行一行的遍历

1. 迭代遍历列

遍历列的方法及其简单,类似于遍历列表

import pandas as pd

data1 = [
    {'语文': 90, '数学': 92, 'id': 1},
    {'语文': 98, '数学': 87, 'id': 2},
    {'语文': 87, '数学': 90, 'id': 3},
    {'语文': 90, '数学': 98, 'id': 4},
]

df = pd.DataFrame(data1, index=['小明', '小红', '小刚', '小丽'])
df.index.name = '姓名'
df.columns.name = '科目'

for col in df:
    print(col, df[col])

col是列名, 除了这种方法以外,还可以使用iteritems

for key, value in df.iteritems():
   print(key, value)
   print("*"*20)

2. 迭代遍历行

对行数据的迭代遍历可以使用2个方法

  1. iterrows
  2. itertuples

2.1 iterrows, 遍历行(索引,序列)对

for row_index,row in df.iterrows():
   print(row_index, row)
   print("*"*20)

程序输出结果

小明 科目
id     1
数学    92
语文    90
Name: 小明, dtype: int64
小红 科目
id     2
数学    87
语文    98
Name: 小红, dtype: int64
小刚 科目
id     3
数学    90
语文    87
Name: 小刚, dtype: int64
小丽 科目
id     4
数学    98
语文    90
Name: 小丽, dtype: int64

2.2 itertuples

for row in df.itertuples():
   print(row, type(row))
   print("*"*20)

程序输出结果

Pandas(Index='小明', id=1, 数学=92, 语文=90) <class 'pandas.core.frame.Pandas'>
********************
Pandas(Index='小红', id=2, 数学=87, 语文=98) <class 'pandas.core.frame.Pandas'>
********************
Pandas(Index='小刚', id=3, 数学=90, 语文=87) <class 'pandas.core.frame.Pandas'>
********************
Pandas(Index='小丽', id=4, 数学=98, 语文=90) <class 'pandas.core.frame.Pandas'>
********************

itertuples返回的是一个迭代器,迭代器为DataFrame中的每一行生成一个命名元组,元组的第一个元素将是行的相应索引值,而其余值是行值

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案