在Pandas中遍历DataFrame的行

发布时间 2023-10-19 20:40:00作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=在Pandas中遍历DataFrame的行

我有一个pandas DataFrame,df

   c1   c2
0  10  100
1  11  110
2  12  120

我该如何遍历这个DataFrame的行?对于每一行,我想通过列的名称访问它的元素(单元格中的值)。例如:

for row in df.rows:
    print(row['c1'], row['c2'])


我发现了一个类似的问题,它建议使用以下任一种方法:

  • for date, row in df.T.iteritems():
  • for row in df.iterrows():

但我不明白row对象是什么,以及如何使用它。


DataFrame.iterrows是一个生成器,它同时产生索引和行(作为Series):

import pandas as pd

df = pd.DataFrame({'c1': [10, 11, 12], 'c2': [100, 110, 120]})
df = df.reset_index()  # 确保索引与行数配对

for index, row in df.iterrows():
    print(row['c1'], row['c2'])

10 100
11 110
12 120


来自文档的免责声明:

遍历pandas对象通常较慢。在许多情况下,不需要手动遍历行,可以通过以下方法之一避免遍历

  • 寻找向量化解决方案:许多操作可以使用内置方法或NumPy函数、(布尔)索引等执行。
  • 当您有一个无法一次处理完整DataFrame/Series的函数时,最好使用apply()而不是遍历值。请参阅函数应用文档。
  • 如果您需要对值进行迭代操作,但性能很重要,可以考虑使用cython或numba编写内部循环。有关此方法的一些示例,请参阅增强性能部分。

本线程中的其他答案深入探讨了iter*函数的替代方案,如果您想了解更多信息。