我有一个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*函数的替代方案,如果您想了解更多信息。