Итерация по DataFrame в pandas с использованием itertuples
Я перебираю DataFrame в pandas, используя метод itertuples()
, и хотел бы захватить номера строк во время итерации. Вот мой текущий код:
for row in df.itertuples():
print(row['name'])
Ожидаемый вывод:
1 larry
2 barry
3 michael
Где 1, 2, 3 — это номера строк. Я бы хотел избежать использования счетчика для получения номера строки. Есть ли простой способ достичь этого с помощью pandas?
4 ответ(ов)
Когда вы используете itertuples
, вы получаете именованный tuple
для каждой строки. По умолчанию вы можете получить значение индекса для этой строки с помощью row.Index
.
Если значение индекса вас не устраивает, вы можете использовать enumerate
:
for i, row in enumerate(df.itertuples(), start=1):
print(i, row.name)
enumerate
заменяет собой ненужный счетчик, что делает код более чистым и читаемым.
Ваш код перебирает строки DataFrame df
с помощью метода itertuples()
. При каждом проходе он выводит значение индекса и значение в столбце 'name' для каждой строки. Вы используете getattr()
для доступа к атрибутам, что позволяет достать значения по имени. Вот пример, как это можно сделать:
for row in df.itertuples():
print(getattr(row, 'Index'), getattr(row, 'name'))
Этот код будет выводить индекс строки и значение столбца 'name' для каждой строки df
. Если у вас возникают вопросы или нужны уточнения по работе с DataFrame, не стесняйтесь задавать их!
Если имена столбцов не являются допустимыми именами в Python, вы можете использовать следующий подход:
for i, row in enumerate(df.itertuples(index=False)):
print(str(i) + row[df.columns.get_loc('My nasty - column / name')])
Обратите внимание, что если вы не укажете index=False
, то будет прочитан столбец, предшествующий указанному. Таким образом, важно использовать этот параметр для правильной работы с вашими данными.
Если у вас есть большой DataFrame (например, миллион строк), использование itertuples
значительно быстрее, чем использование iterrows
.
По моему опыту, работать с обоими способами довольно просто, и вы можете легко получать доступ к значениям DataFrame. Однако, если вам важно оптимизировать скорость обработки данных, рекомендую использовать itertuples
, так как это решение будет более производительным для больших объемов данных.
Как изменить порядок столбцов в DataFrame?
Преобразование списка словарей в DataFrame pandas
Установить значение для конкретной ячейки в DataFrame pandas с использованием индекса
Выбор строки из pandas Series/DataFrame по целочисленному индексу
Получить все ключи из объекта GroupBy в Pandas