Python 列名中的未知字符

Python 列名中的未知字符,python,pandas,Python,Pandas,我有这样一个df: Allotments NDWI TWI 1 2 4 2 3 6 我正在尝试重命名这些列,但打印时: df.columns.values 这是返回的: ['\xef\xbb\xbfAllotments' 'NDWI' 'TWI'] 当我看df时,它只是说分配。如何删除这些额外的字符 我试过了 df.rename(columns=lambda x: x.strip()) 但是运气不好。这是一个错误。您

我有这样一个df:

Allotments   NDWI   TWI
1             2     4
2             3     6
我正在尝试重命名这些列,但打印时:

df.columns.values
这是返回的:

['\xef\xbb\xbfAllotments' 'NDWI' 'TWI']
当我看df时,它只是说
分配
。如何删除这些额外的字符

我试过了

df.rename(columns=lambda x: x.strip())
但是运气不好。

这是一个错误。您可以对内容进行反编码以修复此问题

x = ['\xef\xbb\xbfAllotments', 'NDWI', 'TWI']
x = [s.decode("utf-8-sig").encode("utf-8") for s in x]
print(x) # => ['Allotments', 'NDWI', 'TWI']

您可以将
encoding='utf-8'
作为kwarg传递给,以便正确解码BOM。

额外的字符是utf8 BOM。有关更多详细信息,请参阅此答案。这是utf-8我相信你是怎么读取这些数据的?如果是通过
read\u csv
读取,那么尝试通过
encoding='utf-8'
对值执行简单的str()操作不起作用吗?@user2255757不,不起作用。