Как проверить, существует ли столбец в Pandas
Как проверить, существует ли колонка в DataFrame библиотеки Pandas df
?
У меня есть DataFrame следующего вида:
A B C
0 3 40 100
1 6 30 200
Как мне проверить, существует ли колонка "A"
, чтобы я мог выполнить следующее вычисление:
df['sum'] = df['A'] + df['C']
А если колонки "A"
не существует, мне нужно выполнить другое вычисление:
df['sum'] = df['B'] + df['C']
Как это можно реализовать в коде?
4 ответ(ов)
Это будет работать:
if 'A' in df:
Но для ясности я бы, вероятно, написал так:
if 'A' in df.columns:
Чтобы предложить еще один способ без использования операторов if
, вы можете воспользоваться методом get()
для DataFrame
. Для выполнения суммирования в соответствии с вопросом можно использовать следующий код:
df['sum'] = df.get('A', df['B']) + df['C']
Метод get
у DataFrame
имеет поведение, аналогичное словарям в Python.
Вы также можете использовать метод isin()
на столбцах, чтобы проверить, существуют ли конкретные столбцы, и затем вызвать any()
, чтобы получить одно логическое значение. Например, чтобы проверить, содержит ли DataFrame столбцы A
или C
, можно сделать следующее:
if df.columns.isin(['A', 'C']).any():
# выполнить какое-то действие
Чтобы проверить, отсутствует ли имя столбца, вы можете использовать оператор not
в условии if:
if 'A' not in df:
# выполнить какое-то действие
или использовать это вместе с вызовом isin().any()
:
if not df.columns.isin(['A', 'C']).any():
# выполнить какое-то действие
isin()
возвращает логический массив, значения которого равны True, если это столбцы A
или C
, и False в противном случае. Значение истинности массива неоднозначно, поэтому вызов any()
сводит его к единственному значению True/False.
Этот фрагмент кода проверяет, являются ли имена столбцов 'A' и 'B' частью столбцов DataFrame df
. Вот его объяснение:
if set(('A', 'B')) <= set(df.columns):
... # 'A' и 'B' являются именами столбцов DataFrame df
else:
... # 'A' или 'B' не являются именами столбцов DataFrame df
В данном случае мы используем операцию подмножества (<=
), чтобы проверить, содержатся ли все элементы из множества {'A', 'B'}
в множестве столбцов DataFrame df
. Если результат проверки истинный, то оба столбца присутствуют в df
, иначе хотя бы один из них отсутствует.
Это решение достаточно элегантное и читаемое для проверки наличия нескольких столбцов в DataFrame.
Как изменить порядок столбцов в DataFrame?
Преобразование списка словарей в DataFrame pandas
Объединение двух столбцов текста в DataFrame pandas
Ошибка UnicodeDecodeError при чтении CSV-файла в Pandas
Установить значение для конкретной ячейки в DataFrame pandas с использованием индекса