如何通过python中的pandas更改CSV文件中的索引?

问题描述 投票:0回答:1

我正在尝试将“ID”作为索引,它会抛出下面提到的错误并且图像:

enter image description here

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")

错误:

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'
python pandas keyerror
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.