Warm tip: This article is reproduced from serverfault.com, please click

python- pandas read_csv()

(python - Pandas read_csv())

发布于 2020-11-28 17:00:15

这是我的Python代码:

import pandas as pd
data = [{'Countries':[],2016:[],2017:[],2018:[],2019:[]}]
df = pd.DataFrame(data)

opt='y'
while(opt=='y'):
    print("1. Add a new record to the end of the file")
    print("2. Display the selected records")
    print("3. Delete a Student record")
    print("4. Update a Student record")
    print("5. Reports of Students")
    ch=int(input("Enter your choice"))
    if ch==1:
        df=pd.read_csv("info.csv")
        i=len(df)
        cntry=input("Enter country name")
        i=int(input("Enter international tourism arrival rate in 2016"))
        ii=int(input("Enter international tourism arrival rate in 2017"))
        iii=int(input("Enter international tourism arrival rate in 2018"))
        iv=int(input("Enter international tourism arrival rate in 2019"))
        df.loc[cntry]=[i,ii,iii,iv]
        df.to_csv("info.csv")
        print("A new record is successfully inserted\n\n")
    elif ch==2:
      df=pd.read_csv("info.csv")
      print(df)
    opt=input("want to continue") 

我的CSV文件:

Country,2016,2017,2018,2019
France,82.5,86.4,87.1,89.4
US,80.3,81.9,82.2,82.8
China,74.2,76.9,77.6,79.6
Italy,59.5,60.7,61.5,62.9
Turkey,55.6,58.3,60.1,62.1
Germany ,35.3,37.6,40.5,45.8
Thailand,37.5,37.5,38.2,38.9
UK,34.2,35.6,36.4,38.2
Japan,36.7,37.7,35.4,36.3
Greece,25.6,28.7,30.5,31.2
Malaysia,26.3,27.2,29.6,30.1
Russia Fed,25.6,27.9,30.3,29.3
Canada,24.8,25.9,26.7,25.8
Poland,23.4,24.4,25.2,24.6
India,20.1,21.2,22.3,22.6

我想向文件中添加更多条目,它接受了所有必需的数据,但显示此错误:

    Traceback (most recent call last):

  File "C:\Users\Dell\OneDrive\Desktop\agj.py", line 22, in <module>
    df.loc[cntry]=[i,ii,iii,iv]

  File "C:\Users\Dell\anaconda3\lib\site-packages\pandas\core\indexing.py", line 670, in __setitem__
    self._setitem_with_indexer(indexer, value)

  File "C:\Users\Dell\anaconda3\lib\site-packages\pandas\core\indexing.py", line 874, in _setitem_with_indexer
    return self._setitem_with_indexer_missing(indexer, value)

  File "C:\Users\Dell\anaconda3\lib\site-packages\pandas\core\indexing.py", line 1118, in _setitem_with_indexer_missing
    raise ValueError("cannot set a row with mismatched columns")

ValueError: cannot set a row with mismatched columns
Questioner
Aditya Krishnan Mohan
Viewed
0
MaxYarmolinsky 2020-11-29 05:04:24

问题是你尚未将“国家/地区”设置为索引,它仅被视为数据框的第一列。

所以,

df.loc[cntry]=[i,ii,iii,iv]

数组中应该有5个元素。这也没有意义,因为尚未将cntry设置为索引。

解决此问题的方法是将国家/地区设置为数据框的索引,如下所示

df.set_index('Country', inplace=True)