DataFrame是二维数据,因此,大部分操作都需要考虑两个维度,行和列,对一个DataFrame迭代遍历时,可以一列一列的遍历,也可以一行一行的遍历
遍历列的方法及其简单,类似于遍历列表
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个方法
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
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