KeyError '\ufeffMaterial VN #'

Я столкнулся с проблемой, когда данные моей формы вроде бы закодированы (не уверен, в какой кодировке), но когда я пытаюсь использовать pandas для поиска имени столбца, он ищет '\ufeffMaterial #' вместо 'Material #'. Я пробовал использовать pd.read_csv(file, encoding='utf-8-sig') и пытался (безуспешно) кодировать/декодировать имя столбца. Есть какие-нибудь предложения? Строка, которая выдает ошибку, находится в functions.py: custColData = oldDF.loc[:,string].

functions.py

def mapData(company, hierarchy):
    oldDF = pd.read_csv(company.file, encoding='utf-8-sig')
    newDF = pd.DataFrame()
    if (company.needsMapping == "False"):
        pass
    else:
        columnMappings = RawDataColumnMapping.objects.filter(companyName = company)
        attributesDict = {}
        for columnMap in columnMappings:
            string = str(columnMap.custColumn).encode('utf-8').decode()
            custColData = oldDF.loc[:,string]
            if columnMap.columnMapping != COLUMNS.attributes:
                newDF[columnMap.get_columnMapping_display()] = custColData
            else:
                custCol = columnMap.custColumn.split('~')
                columnDict = dict(zip(custCol, custColData))
                attributesDict.update(columnDict)
        newDF['attributes'] = (json.dumps(attributesDict))

models.py

class RawDataColumnMapping(models.Model):

    companyName = models.ForeignKey(RawData, on_delete=models.CASCADE)
    custColumn = models.TextField()
    columnMapping = models.PositiveSmallIntegerField(choices=COLUMNS)

    def __str__(self):
        return f"{self.companyName.companyName}_{self.custColumn}_{self.get_columnMapping_display()}"

views.py

def applyPPTMapping(request, companyName):
    if (request.method == "POST"):
        form = ApplyPPTMappingForm(request.POST, companyName=companyName)
        if form.is_valid():
            rawData = form.cleaned_data['companyRawData']
            rawDataCompany = rawData.split('_', maxsplit=2)[-1]
            rawDataObj = RawData.objects.get(slugField=rawDataCompany)
            hierarchy = form.cleaned_data['companyHierarchy']
            hierarchyCompany = hierarchy.split('_', maxsplit=2)[-1]
            hierarchyObj = RawData.objects.get(slugField=hierarchyCompany)
            df = mapData(rawDataObj, hierarchyObj)
Вернуться на верх