Python DataFrame-查找列的索引值

Python DataFrame-查找列的索引值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个DataFrame,它有ID、Name、Specification和Time等列 我的文件路径来打开它们 mc = pd.read_csv("C:\\data.csv", sep = ",", header = 0, dtype = str) 当我检查列值时,使用 mc.coulumns.values 我发现我的身份证上有一个奇怪的角色 ['/ufeffID', 'Name', 'Specification', 'Time'] mc.columns.values[0] =

我有一个DataFrame,它有ID、Name、Specification和Time等列

我的文件路径来打开它们

mc = pd.read_csv("C:\\data.csv", sep = ",", header = 0, dtype = str)
当我检查列值时,使用

mc.coulumns.values 
我发现我的身份证上有一个奇怪的角色

['/ufeffID', 'Name', 'Specification', 'Time']  
 mc.columns.values[0] = "ID"
keyError 'ID'.
在这之后,我分配了ID为的列,如下所示

['/ufeffID', 'Name', 'Specification', 'Time']  
 mc.columns.values[0] = "ID"
keyError 'ID'.
当我使用

mc.columns.values 
我的成绩是

Array(['ID', 'Name', 'Specification', 'Time']) 
然后,我跟,

"ID" in mc.columns.values
它给了我
“True”

然后我试着

mc["ID"]
我有个错误是这样说的

['/ufeffID', 'Name', 'Specification', 'Time']  
 mc.columns.values[0] = "ID"
keyError 'ID'.

我想得到ID列的值,去掉ID列前面的奇怪字符?有什么办法解决这个问题吗?任何帮助都将不胜感激。先谢谢你

这是utf-16 BOM,将
encoding='utf-16'
传递到
read\u csv
请参见:

上述内容应适用于具体的utf-16 Big-endian的BOM

您还应使用
重命名
,而不是尝试覆盖np数组值:

mc.rename(columns={mc.columns[0]: "ID"}, inplace=True)

应该能正常工作

你能试着像我建议的那样传递
encoding=utf-16'
吗?另外,你可以通过使用
mc.columns.tolist()打印来确认真正的列名是什么。
这是相关的: