Моей конечной целью является сравнение двух имен столбцов в df2, если имена появляются в списке значений, извлеченных из df1.
У меня есть список имен и функция, которая проверяет, существуют ли эти имена как имя столбца в df1. Однако это работает в python и не работает в pySpark. Я получаю сообщение об ошибке: AttributeError: 'DataFrame' object has no attribute 'values'.
Мой процесс выглядит следующим образом:
1) Извлеките значения столбцов из df1 и поместите их в список, таким образом
entityDomainList
2) Извлеките столбец names из df2 и превратите его в отдельный фрейм данных (dfNew)
3) создайте функцию, которая проверит, какие значения списка существуют в dfNew
Как я могу изменить свою функцию, чтобы она перебирала имена столбцов? Или есть способ сравнить мои значения списка с именами столбцов df2 (полный кадр данных; ie. Нет необходимости создавать новый кадр данных только с именами столбцов)?
entityDomainList = ['LeaseRecoveryType','LeaseStatus','IncludeLeaseInIPM','LeaseAccountType', 'ClassofUse','LeaseType']
#Function to check matching values
def checkIfDomainsExists(data, listOfValues):
'''List of elements '''
entityDomainList=Entity.select("DomainName").rdd.flatMap(lambda x:x).collect()
#entityDomainList
'''Check if given elements exists in data'''
results_true = {}
results_false ={}
#Iterate over list of domains one by one
for elem in listOfValues:
#Check if the element exists in dataframe values
if elem in data.columns:
results_true[elem] = True
else:
results_false[elem] = False
#Return dictionary of values and their flag
#Only return TRUE values
return results_true;
# Get TRUE matched column values
results_true = checkIfDomainsExists(psv, entityDomainList)
results_true