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)