如何通过python中的pandas更改CSV文件中的索引?
我试图将“ID”作为索引,它抛出下面提到的错误和图像: 错误:如何通过python中的pandas更改CSV文件中的索引?,python,pandas,keyerror,Python,Pandas,Keyerror,我试图将“ID”作为索引,它抛出下面提到的错误和图像: 错误: Traceback (most recent call last): File "C:\Users\sharathkumar.chattar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\indexes\base.py", line 2656, in get_loc return self._engine.get_loc(
Traceback (most recent call last):
File "C:\Users\sharathkumar.chattar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\indexes\base.py", line 2656, in get_loc
return self._engine.get_loc(key)
File "pandas\_libs\index.pyx", line 108, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 1601, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas\_libs\hashtable_class_helper.pxi", line 1608, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'ID'
我认为问题在于“ID”列名中有尾随空格。我复制了您的数据,但删除了导入时多余的空格。您会注意到列名是如何正确对齐的。您的ID列似乎不是,可能是因为名称中有尾随空格。其他列名也是如此
import pandas as pd
obj = pd.read_csv('Supermarkets.csv')
obj
ID Address City Country Name Number
0 1 Ecity-1 Bangalore India village mart 2
1 2 Ecity-2 Mysore India More 3
2 3 Ecity-3 Dharwad India Bigg bazar 1
3 4 Ecity-4 Haveri India Super Mart 2
4 5 Ecity-5 Badami India Kirani angadi 1
obj.set_index("ID")
Address City Country Name Number
ID
1 Ecity-1 Bangalore India village mart 2
2 Ecity-2 Mysore India More 3
3 Ecity-3 Dharwad India Bigg bazar 1
4 Ecity-4 Haveri India Super Mart 2
5 Ecity-5 Badami India Kirani angadi 1
我可以复制相同的数据表,并通过使用带空格的全名来避免错误:
obj = pd.read_csv('Supermarkets_spaces.csv')
obj
ID Address City Country Name Number
0 1 Ecity-1 Bangalore India village mart 2
1 2 Ecity-2 Mysore India More 3
2 3 Ecity-3 Dharwad India Bigg bazar 1
3 4 Ecity-4 Haveri India Super Mart 2
4 5 Ecity-5 Badami India Kirani angadi 1
obj.set_index("ID ")
Address City Country Name Number
ID
1 Ecity-1 Bangalore India village mart 2
2 Ecity-2 Mysore India More 3
3 Ecity-3 Dharwad India Bigg bazar 1
4 Ecity-4 Haveri India Super Mart 2
5 Ecity-5 Badami India Kirani angadi 1
我认为问题在于“ID”列名中有尾随空格。我复制了您的数据,但删除了导入时多余的空格。您会注意到列名是如何正确对齐的。您的ID列似乎不是,可能是因为名称中有尾随空格。其他列名也是如此
import pandas as pd
obj = pd.read_csv('Supermarkets.csv')
obj
ID Address City Country Name Number
0 1 Ecity-1 Bangalore India village mart 2
1 2 Ecity-2 Mysore India More 3
2 3 Ecity-3 Dharwad India Bigg bazar 1
3 4 Ecity-4 Haveri India Super Mart 2
4 5 Ecity-5 Badami India Kirani angadi 1
obj.set_index("ID")
Address City Country Name Number
ID
1 Ecity-1 Bangalore India village mart 2
2 Ecity-2 Mysore India More 3
3 Ecity-3 Dharwad India Bigg bazar 1
4 Ecity-4 Haveri India Super Mart 2
5 Ecity-5 Badami India Kirani angadi 1
我可以复制相同的数据表,并通过使用带空格的全名来避免错误:
obj = pd.read_csv('Supermarkets_spaces.csv')
obj
ID Address City Country Name Number
0 1 Ecity-1 Bangalore India village mart 2
1 2 Ecity-2 Mysore India More 3
2 3 Ecity-3 Dharwad India Bigg bazar 1
3 4 Ecity-4 Haveri India Super Mart 2
4 5 Ecity-5 Badami India Kirani angadi 1
obj.set_index("ID ")
Address City Country Name Number
ID
1 Ecity-1 Bangalore India village mart 2
2 Ecity-2 Mysore India More 3
3 Ecity-3 Dharwad India Bigg bazar 1
4 Ecity-4 Haveri India Super Mart 2
5 Ecity-5 Badami India Kirani angadi 1
可以在这里添加obj.columns.tolist()的输出吗?什么是打印(obj.columns)?在
obj.columns=obj.columns.str.strip()
之后,这是否起作用?是的,“ID”似乎不在obj.column中。可以将obj.columns.tolist()的输出添加到这里吗?什么是打印(obj.columns)
?在obj.columns=obj.columns.str.strip()
之后是否可以执行此操作?是的,“ID”似乎不在obj.columns中