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.