Как перебрать кадр данных 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. Подводя итог, вот четыре метода, описанные в этом руководстве:
iterrows()
: возвращает итератор, выдающий индекс и данные строки для каждой строкиapply()
: применяет функцию к каждой строке или столбцу DataFrame.itertuples()
: возвращает итератор, выдающий именованный кортеж для каждой строки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)