Есть ли смысл проверять, существует ли столбец в pandas df - PullRequest
0 голосов
/ 21 февраля 2019

Столбец жизненно важен для выполнения вашей программы, поэтому вы хотите, чтобы он умер, если он не существует.

df["column"] = df[["column1", "column2"]].apply(self._func, axis=1)

это вызовет KeyError, если column1 или column2 не существует.

if "vidcolumn1" in df.columns and "column2" in df.columns:
  df["column"] = df[["column1", "column2"]].apply(self._func, axis=1)
else:
  raise ValueError("Column1 and Column2 are required for ...")

Кажется, что это не дает ничего полезного, если только вы не хотите что-то делать в другой части, например, регистрировать ошибку где-то еще в ваших журналах.

Так что если выу вас нет запасного варианта для вашей программы в случае отсутствия столбца, есть ли смысл использовать второй вариант?

1 Ответ

0 голосов
/ 21 февраля 2019

Использование try-except оператора:

try:
   df["column"] = df[["column1", "column2"]].apply(self._func, axis=1)
except KeyError:
    #error log
    print ('I have problem')

    print("Column1 and Column2 are required for ...")

Но также в вашем решении следует добавить код к else утверждению:

#better code for test if exist all values of set in columns
s = set(['column1','column2'])
if s.issubset(set(df.columns)):
    df["column"] = df[["column1", "column2"]].apply(self._func, axis=1)
else:
    #error log
    print ('I have problem')
    raise ValueError("Column1 and Column2 are required for ...")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...