Как перебрать кадр данных pandas?

Итерация по Pandas DataFrame — обычная задача при работе с данными в Python. Существует несколько различных способов перебора DataFrame, в зависимости от ваших конкретных потребностей. Вот наиболее распространенные способы перебора DataFrame:

1. iterrows() 2.apply() 3.itertuples() 4.items()

Способ 1: iterrows()

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iterrows.html?highlight=iterrow

Метод iterrows() возвращает итератор, выдающий индекс и данные строки для каждой строки. Вот пример использования iterrows():

import pandas as pd

# Create a sample DataFrame
df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})

# Iterate over the rows
for index, row in df.iterrows():
    print(index, row['col1'], row['col2'])

Выход

0 1 3
1 2 4

В приведенном выше примере index — это индекс строки, а row — это объект серии Pandas, содержащий данные для строки. Вы можете получить доступ к данным для определенного столбца, используя имя столбца в качестве ключа к объекту row.

Способ 2: apply()

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html?highlight=apply#pandas.DataFrame.apply

Вы также можете использовать метод apply() для применения функции к каждой строке или столбцу DataFrame. Например:

def multiply_columns(row):
    return row['col1'] * row['col2']

df['new_col'] = df.apply(multiply_columns, axis=1)

Это добавит новый столбец в DataFrame, содержащий результат функции, примененной к каждой строке.

Способ 3: itertuples()

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.itertuples.html?highlight=itertuples

Если вам нужно оптимизировать производительность, вы можете использовать метод itertuples(), который возвращает итератор, выдающий именованный кортеж для каждой строки. Вот пример использования itertuples():

# Iterate over the rows
for row in df.itertuples(index=True, name='Pandas'):
    print(row.Index, row.col1, row.col2)

Выход

0 1 3
1 2 4

itertuples() в целом быстрее, чем iterrows(), но не дает доступа к самому фрейму данных.

Способ 4: items()

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.items.html?highlight=items

Если вам нужно выполнить итерацию как по индексу, так и по данным DataFrame, вы можете использовать метод items(). Вот пример использования items():

# Iterate over the index and data
for index, data in df.items():
    print(index)
    print(data)

Выход

col1
0    1
1    2
Name: col1, dtype: int64
col2
0    3
1    4
Name: col2, dtype: int64

Заключение

Отлично, похоже, у вас есть четкое представление о том, как перебирать Pandas DataFrame в Python. Подводя итог, вот четыре метода, описанные в этом руководстве:

  1. iterrows(): возвращает итератор, выдающий индекс и данные строки для каждой строки
  2. apply(): применяет функцию к каждой строке или столбцу DataFrame.
  3. itertuples(): возвращает итератор, выдающий именованный кортеж для каждой строки
  4. items(): перебирает как индекс, так и данные DataFrame.

Не забудьте выбрать метод, который лучше всего соответствует вашим конкретным потребностям и требованиям. Удачного кодирования!



pandas.DataFrame.items — документация pandas 1.5.2 (pydata.org)

pandas.DataFrame.itertuples — документация pandas 1.5.2 (pydata.org)

pandas.DataFrame.apply — документация pandas 1.5.2 (pydata.org)

pandas.DataFrame.iterrows — документация pandas 1.5.2 (pydata.org)