Проверьте, есть ли список столбцов в кадре данных pandas - PullRequest
1 голос
/ 15 января 2020

У меня есть фрейм данных, как показано ниже.

Unit_ID     Type      Sector       Plot_Number       Rental
1           Home      se1          22                50
2           Shop      se1          26                80

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

если список равен ['Unit_ID', 'Sector', 'Usage_Type', 'Price' ]

Ожидаемый результат: столбец «Usage_Type» и «Price» находятся / отсутствуют в кадре данных.

если список равен ['Unit_ID', 'Sector' , 'Type', 'Plot_Number' ]

Ожидается Вывод: все кулоны в списке находятся в фрейме данных

Ответы [ 2 ]

1 голос
/ 15 января 2020

Список имен столбцов можно найти по:

columns = list(my_dataframe)

Теперь вы можете перебирать свой список поиска и проверять, присутствует ли каждый элемент в списке columns.

def search_func(to_check, columns):
    not_present = []

    for i in to_check:
        if i not in columns:
            not_present.append(i)
    return not_present

to_check = ['Unit_ID', 'Sector',  'Usage_Type', 'Price' ]
not_present = search_func(to_check, columns)
if len(not_present) == 0:
    print(" All coulmns are in the dataframe")
else: 
    print (not_present, "not present in dataframe")
1 голос
/ 15 января 2020

Вы можете попробовать использовать ниже:

#For checking if the list of columns are actually 
#a subset of the dataframe columns or not , you can use:

def myf1(x,to_check):
    if not set(to_check).issubset(set(x.columns)):
       return f"{' and '.join(set(to_check).difference(x.columns))} are not available in the dataframe"
    return "All columns are available in the dataframe"

to_check = ['Unit_ID', 'Sector'] 
myf1(df,to_check)
#'All columns are available in the dataframe'

to_check = ['Unit_ID', 'Sector','XYZ'] 
myf1(df,to_check)    
#'XYZ are not available in the dataframe'
...