6

Как проверить, существует ли столбец в Pandas

2

Как проверить, существует ли колонка в 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 ответ(ов)

12

Это будет работать:

if 'A' in df:

Но для ясности я бы, вероятно, написал так:

if 'A' in df.columns:
0

Чтобы предложить еще один способ без использования операторов if, вы можете воспользоваться методом get() для DataFrame. Для выполнения суммирования в соответствии с вопросом можно использовать следующий код:

df['sum'] = df.get('A', df['B']) + df['C']

Метод get у DataFrame имеет поведение, аналогичное словарям в Python.

0

Вы также можете использовать метод 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.

0

Этот фрагмент кода проверяет, являются ли имена столбцов '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.

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