繁体   English   中英

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

[英]How do I change Index in a CSV file through pandas in python?

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

在此处输入图片说明

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'

我认为问题在于“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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM