Python - если str в df.column введите в операторе if - PullRequest
0 голосов
/ 22 января 2020

В основном мой код импортирует некоторую конфигурацию из файла конфигурации, где пользователь может включать / выключать часть кода. Файл конфигурации выглядит примерно так: это json файл:

условие 1: ['str1', 1] условие 2: ['str2', 1]

Строка - это имя он будет присвоен столбцу df, и целое число может быть 1 или 0 для включения или выключения части кода.

В начале кода, если целое число установлено в 1, используется строка создать столбец в фрейме данных.

for (k, v) in config_file.items():
     if v[1] == 1:
        df[v[0]] = np.nan

Так что теперь у меня будет столбец с именем 'str1', только если целое число для условия1 равно 1. В некоторой точке кода мне нужно сначала проверить что целое число для обоих условий установлено в 1, а затем мне нужно выбрать все строки, содержащие значение 1.

if condition1[1] == 1 or condition2[1] == 1:
    if (len(df[df['str1'] == 1]) > 0 or len(df[df['str2'] == 1]) > 0):

Проблема теперь состоит в том, что если одно из двух условий установлено в 0, скажем, условие1, тогда столбец df ['str2'] не будет создан, и len (df [df ['str2'] == 1])> 0 выдаст ошибку.

Есть ли способ сказать python, что нужно оценить часть условия, только если существует столбец / переменная? Большое спасибо за вашу поддержку.

1 Ответ

0 голосов
/ 22 января 2020

Вы должны вложить свои проверки в другую проверку, которая проверяет, есть ли в кадре данных столбец с именем "str2", и обрабатывает различные возникающие возможности.

Проверка, которую вы хотите добавить в свой код:

 if 'str2' in df.columns:

     # check df['str2']
     # nested if ...

 elif 'str3' in df.columns:

        #keep going checking conditions or whatever

 else: 

    #last case in your checking loop
...