Pandas iterrows — это встроенная функция DataFrame, которая поможет вам просмотреть каждую строку.
Что такое функция Pandas iterrows()?
Функция Pandas iterrows() используется для перебора строк фрейма данных Pandas. Метод Pandas iterrows() возвращает итератор, содержащий индекс каждой строки и данные в каждой строке в виде серии. Поскольку iterrows() возвращает итератор, мы можем использовать следующую функцию, чтобы увидеть содержимое итератора.
В дополнение к iterrows в Pandas также есть полезная функция itertuples(). Функция iterrows() используется для перебора строк DataFrame в виде пар (индекс, серия). Функция перебирает столбцы DataFrame, возвращая кортеж с именем столбца и содержимым в виде серии.
Синтаксис
|
1 |
DataFrame.iterrows(self) |
Yields
- index: метка или кортеж метки
Индекс строки. Кортеж для MultiIndex.
- data: Series
Данные строки как Series.
- it: generator
Это генератор, который перебирает строки кадра.
Шаги для перебора строк в DataFrame Pandas
Шаг 1: Создайте DataFrame
Давайте создадим DataFrame из данных JSON. Во-первых, нам нужно преобразовать JSON в Dict с помощью функции json.loads(). Затем мы конвертируем Dict в DataFrame, используя функцию DataFrame.from_dict().
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 |
# app.py import pandas as pd import json videogame = '{"console": ["Playstation5", "XboxSeriesX"], "games": ["Spiderman", "Halo"]}' dict = json.loads(videogame) df = pd.DataFrame.from_dict(dict) print(df) print(type(df)) |
Выход:
|
1 2 3 4 5 |
python3 app.py console games 0 Playstation5 Spiderman 1 XboxSeriesX Halo <class 'pandas.core.frame.DataFrame'> |
Итак, мы создали DataFrame.
Шаг 2: Итерация строк DataFrame с помощью Pandas iterrows()
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py import pandas as pd import json videogame = '{"console": ["Playstation5", "XboxSeriesX"], "games": ["Spiderman", "Halo"]}' dict = json.loads(videogame) df = pd.DataFrame.from_dict(dict) for index, row in df.iterrows(): print(index, row['console'], row['games']) |
Выход:
|
1 2 3 |
python3 app.py 0 Playstation5 Spiderman 1 XboxSeriesX Halo |
Поскольку данные строки возвращаются в виде серии, мы можем использовать имена столбцов для доступа к значению каждого столбца в строке. Здесь мы перебираем каждую строку и назначаем индекс строки, данные строки переменным с именем index и row. Затем мы получаем доступ к данным строки, используя имена столбцов DataFrame.
Поскольку функция Pandas iterrows() возвращает серию для каждой строки, она не сохраняет dtypes в строках. Вы никогда не должны изменять то, что вы повторяете.
Итерация по объектам pandas очень медленная. Во многих случаях перебор строк вручную не требуется. Чтобы сохранить dtypes при переборе строк, лучше использовать itertuples(), которая возвращает именованные кортежи значений и обычно работает быстрее, чем iterrows().
Pandas iterrows() и next()
Функция Pandas iterrows() возвращает итератор, и мы можем использовать функцию next() для просмотра содержимого итератора. Мы видим, что метод iterrows() возвращает кортеж с индексом строки и данными строки в виде объекта Series.
|
1 2 3 4 5 6 7 8 9 10 |
# app.py import pandas as pd import json videogame = '{"console": ["Playstation5", "XboxSeriesX"], "games": ["Spiderman", "Halo"]}' dict = json.loads(videogame) df = pd.DataFrame.from_dict(dict) print(next(df.iterrows())[0]) print(next(df.iterrows())[1]) |
Выход:
|
1 2 3 4 5 |
python3 app.py 0 console Playstation5 games Spiderman Name: 0, dtype: object |
Мы можем пройтись по Pandas DataFrame и легко получить доступ к индексу и содержимому каждой строки.
Как перебирать строки DataFrame с помощью itertuples()
Pandas itertuples() — это встроенная функция DataFrame, которая перебирает строки DataFrame как namedtuples. Это лучший способ итерации/цикла по строкам DataFrame — использовать функцию Pandas itertuples().
Согласно названию itertuples(), она перебирает строки фрейма данных и возвращает именованный кортеж.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py import pandas as pd import json videogame = '{"console": ["Playstation5", "XboxSeriesX"], "games": ["Spiderman", "Halo"]}' dict = json.loads(videogame) df = pd.DataFrame.from_dict(dict) for row in df.itertuples(): print(row) |
Выход:
|
1 2 3 |
python3 app.py Pandas(Index=0, console='Playstation5', games='Spiderman') Pandas(Index=1, console='XboxSeriesX', games='Halo') |
Первый элемент кортежа — это индекс строки, а остальные значения кортежа — это данные в строке. В отличие от функции Pandas iterrows(), данные строки не хранятся в серии.
Из вывода видно, что метод itertuples() DataFrame возвращает содержимое строки в виде именованного кортежа с соответствующими именами столбцов. Поэтому мы можем просто получить доступ к данным с именами столбцов и Index.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py import pandas as pd import json videogame = '{"console": ["Playstation5", "XboxSeriesX"], "games": ["Spiderman", "Halo"]}' dict = json.loads(videogame) df = pd.DataFrame.from_dict(dict) for row in df.itertuples(): print(row.Index, row.console, row.games) |
Выход:
|
1 2 3 |
python3 app.py 0 Playstation5 Spiderman 1 XboxSeriesX Halo |
Заключение

Чтобы перебирать строки в Pandas DataFrame, мы можем использовать Pandas DataFrame iterrows() и Pandas DataFrame itertuples().
