pandas中dataframe行遍历
现有一个数据框pandas的dataframe:
import pandas as pd inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}] df = pd.DataFrame(inp) print(df)
期望输出
c1 c2 0 10 100 1 11 110 2 12 120
现在我想遍历这个数据框的每一行, 在每一行当中我想通过列名访问第一行的每一个元素,例如,实现以下效果:
for row in df.rows: print(row['c1'], row['c2'])
方法一:iterrows(),将DataFrame迭代为(insex, Series)对,效率低,不推荐
返回行Series,100W行数据:1分钟12s,时间花费在类型检查
这个函数同时返回 索引和行对象的生成器可以直接进行遍历
for index, row in df.iterrows(): print(index, row['c1'], row['c2'])#字典方式访问
其中index遍历的是索引列的值,可以直接访问索引
方法二:itertuples(),将DataFrame迭代为元祖,效率高,推荐使用
返回行namedtuple,100W行数据:1.78s,时间花在构建namedtuple
用getattr()访问
student = pd.read_excel('学生ID.xls') for row in student.itertuples(): # print(row) print(row.Index, row.学生姓名, row.账号, row.密码) print(row.Index, getattr(row,'学生姓名'), getattr(row,'账号'), getattr(row,'密码')) break
方法三:for + zip,效率最高,无Index
返回原生元组,100W行数据:1.01s,原生tuple的性能
for A, B in zip(df['A'], df['B']): print(A, B) break