0

Итерация по DataFrame в pandas с использованием itertuples

10

Я перебираю DataFrame в pandas, используя метод itertuples(), и хотел бы захватить номера строк во время итерации. Вот мой текущий код:

for row in df.itertuples():
    print(row['name'])

Ожидаемый вывод:

1 larry
2 barry
3 michael

Где 1, 2, 3 — это номера строк. Я бы хотел избежать использования счетчика для получения номера строки. Есть ли простой способ достичь этого с помощью pandas?

4 ответ(ов)

0

Когда вы используете itertuples, вы получаете именованный tuple для каждой строки. По умолчанию вы можете получить значение индекса для этой строки с помощью row.Index.

Если значение индекса вас не устраивает, вы можете использовать enumerate:

for i, row in enumerate(df.itertuples(), start=1):
    print(i, row.name)

enumerate заменяет собой ненужный счетчик, что делает код более чистым и читаемым.

0

Ваш код перебирает строки DataFrame df с помощью метода itertuples(). При каждом проходе он выводит значение индекса и значение в столбце 'name' для каждой строки. Вы используете getattr() для доступа к атрибутам, что позволяет достать значения по имени. Вот пример, как это можно сделать:

for row in df.itertuples():
    print(getattr(row, 'Index'), getattr(row, 'name'))

Этот код будет выводить индекс строки и значение столбца 'name' для каждой строки df. Если у вас возникают вопросы или нужны уточнения по работе с DataFrame, не стесняйтесь задавать их!

0

Если имена столбцов не являются допустимыми именами в Python, вы можете использовать следующий подход:

for i, row in enumerate(df.itertuples(index=False)):
    print(str(i) + row[df.columns.get_loc('My nasty - column / name')])

Обратите внимание, что если вы не укажете index=False, то будет прочитан столбец, предшествующий указанному. Таким образом, важно использовать этот параметр для правильной работы с вашими данными.

0

Если у вас есть большой DataFrame (например, миллион строк), использование itertuples значительно быстрее, чем использование iterrows.

По моему опыту, работать с обоими способами довольно просто, и вы можете легко получать доступ к значениям DataFrame. Однако, если вам важно оптимизировать скорость обработки данных, рекомендую использовать itertuples, так как это решение будет более производительным для больших объемов данных.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь