我有一个DataFrame,其中包含ID,Name,Specification,Time等列。
我打开它们的文件路径
mc = pd.read_csv("C:\\data.csv", sep = ",", header = 0, dtype = str)
当我使用
检查我的列值时mc.coulumns.values
我发现我的身份证上有一个奇怪的角色,看起来像这样,
['/ufeffID', 'Name', 'Specification', 'Time']
在此之后,我分配了ID如此的列
mc.columns.values[0] = "ID"
当我使用
检查时mc.columns.values
我的结果是,
Array(['ID', 'Name', 'Specification', 'Time'])
然后,我查了一下,
"ID" in mc.columns.values
它给了我"True"
然后我试过了,
mc["ID"]
我收到一条错误陈述,
keyError 'ID'.
我想获取ID列的值并删除ID列前面的奇怪字符?有什么方法可以解决这个问题吗?任何帮助,将不胜感激。先感谢您。
答案 0 :(得分:2)
该utf-16 BOM,将encoding='utf-16'
传递给read_csv
,请参阅:https://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding
mc = pd.read_csv("C:\\data.csv", sep=",", header=0, dtype=str, encoding='utf-16')
以上应该有效FE FF
是特定于utf-16 Big endian的BOM
此外,您应该使用rename
而不是尝试覆盖np数组值:
mc.rename(columns={mc.columns[0]: "ID"}, inplace=True)
应该正常工作