DataFrame.iterrows()

Метод iterrows() возвращает итератор по строкам DataFrame в виде пар (index, Series). Каждая строка преобразуется в Series с именами столбцов в качестве индекса.

Предупреждение

iterrows() медленный — он копирует данные и теряет типы (всё приводится к общему dtype). Для вычислений на массивах используйте векторизованные операции (df["a"] + df["b"]), для построчного — itertuples() или apply(axis=1).

Сигнатура

DataFrame.iterrows()

Параметры

Метод не принимает параметров.

Возвращаемое значение

Генератор пар (label, Series).

Примеры

Пример 1. Простая итерация

import pandas as pd

df = pd.DataFrame({"temp": [22, 23], "humidity": [55, 60]})
for idx, row in df.iterrows():
    print(idx, row["temp"], row["humidity"])
0 22 55
1 23 60

Пример 2. Печать логов Arduino

import pandas as pd

log = pd.DataFrame({
    "t":   [0.0, 0.5, 1.0],
    "cmd": ["FWD", "LEFT", "STOP"],
})
for _, row in log.iterrows():
    print(f"[{row['t']:.1f}s] {row['cmd']}")
[0.0s] FWD
[0.5s] LEFT
[1.0s] STOP

Пример 3. Условная обработка

import pandas as pd

df = pd.DataFrame({
    "sensor": ["A", "B", "C"],
    "value":  [22, 80, 18],
})
for idx, row in df.iterrows():
    if row["value"] > 30:
        print(f"тревога: {row['sensor']} = {row['value']}")
тревога: B = 80

Пример 4. Потеря типов — типичная ошибка

import pandas as pd

df = pd.DataFrame({"a": [1, 2], "b": [1.5, 2.5]})
for _, row in df.iterrows():
    print(row.dtype, row.tolist())
float64 [1.0, 1.5]
float64 [2.0, 2.5]

Столбец a был int64, но в строке стал float64 — Pandas приводит всё к общему типу.

Пример 5. Альтернатива — векторизация

import pandas as pd

df = pd.DataFrame({"a": [1, 2, 3], "b": [10, 20, 30]})
# Вместо iterrows:
df["sum"] = df["a"] + df["b"]
print(df)
   a   b  sum
0  1  10   11
1  2  20   22
2  3  30   33

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.