Python Forum
Error When Trying To Read CSV File - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Error When Trying To Read CSV File (/thread-35695.html)



Error When Trying To Read CSV File - kaega2 - Dec-03-2021

Hello everyone,

I'm just learning Python for the first time and am going through the tutorial on Learnpython.org. I'm getting this weird error. I don't think I'm writing anything wrong. I'm guessing this is a bug in my version of Python? Should I downgrade to another version?

import pandas as pd

# cars = {'cars_per_cap': [809, 731, 588, 18, 200, 70, 45], 'country': ['United States', 'Australia', 'Japan', 'India', 'Russia', 'Morocco', 'Egypt'], 'drives_right': ['true', 'false', 'false', 'false', 'true', 'true', 'true']}

cars = pd.read_csv('cars.csv')
print(cars['country'])
Error:
Traceback (most recent call last): File "C:\Users\kaega\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\indexes\base.py", line 3361, in get_loc return self._engine.get_loc(casted_key) File "pandas\_libs\index.pyx", line 76, in pandas._libs.index.IndexEngine.get_loc File "pandas\_libs\index.pyx", line 108, in pandas._libs.index.IndexEngine.get_loc File "pandas\_libs\hashtable_class_helper.pxi", line 5198, in pandas._libs.hashtable.PyObjectHashTable.get_item File "pandas\_libs\hashtable_class_helper.pxi", line 5206, in pandas._libs.hashtable.PyObjectHashTable.get_item Traceback (most recent call last): File "c:\Users\kaega\Documents\Programming\Python Learning Environment\script.py", line 6, in <module> print(cars['country']) File "C:\Users\kaega\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\frame.py", line 3458, in __getitem__ indexer = self.columns.get_loc(key) File "C:\Users\kaega\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc raise KeyError(key) from err KeyError: 'country'
I'm using Python 3.10.0 downloaded from Python.org.
I'm using Visual Studio Code.
Not sure if this matters, but I do have Mingw64 installed as well.


RE: Error When Trying To Read CSV File - bowlofred - Dec-03-2021

Before thinking about a bug I'd make sure the data matches your expectations.

What do you get for the following? Does it match the column names that you expect?

import pandas as pd
cars = pd.read_csv('cars.csv')
print(list(cars.keys()))



RE: Error When Trying To Read CSV File - deanhystad - Dec-03-2021

I wrote this:
import pandas as pd

cars = pd.DataFrame({'cars_per_cap': [809, 731, 588, 18, 200, 70, 45], 'country': ['United States', 'Australia', 'Japan', 'India', 'Russia', 'Morocco', 'Egypt'], 'drives_right': ['true', 'false', 'false', 'false', 'true', 'true', 'true']})
cars.to_csv('cars.csv')
cars2 = pd.read_csv('cars.csv')
print(cars2['country'])
It produces this output:
Output:
0 United States 1 Australia 2 Japan 3 India 4 Russia 5 Morocco 6 Egypt Name: country, dtype: object
The csv file looks like this:
Output:
,cars_per_cap,country,drives_right 0,809,United States,true 1,731,Australia,false 2,588,Japan,false 3,18,India,false 4,200,Russia,true 5,70,Morocco,true 6,45,Egypt,true
Not everything is necessary. and the CSV file doesn't need underscores instead of spaces. I edited the CSV file to look like this:
Output:
cars per cap,country,drives right 809,United States,true 731,Australia,false 588,Japan,false 18,India,false 200,Russia,true 70,Morocco,true 45,Egypt,true
And ran this program:
import pandas as pd
print(pd.read_csv('cars.csv')['country'])
And it produced this output:
Output:
0 United States 1 Australia 2 Japan 3 India 4 Russia 5 Morocco 6 Egypt Name: country, dtype: object
I then modified the CSV file to look like this:
Output:
cars per cap, country, drives right 809,United States,TRUE 731,Australia,FALSE 588,Japan,FALSE 18,India,FALSE 200,Russia,TRUE 70,Morocco,TRUE 45,Egypt,TRUE
And I get this error:
Error:
Traceback (most recent call last): File "...", line 2, in <module> print(pd.read_csv('cars.csv')['country']) File "...\lib\site-packages\pandas\core\frame.py", line 3455, in __getitem__ indexer = self.columns.get_loc(key) File "...\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc raise KeyError(key) from err KeyError: 'country'
The dataframe keys are 'cars per cap', ' country', and ' drives right'. The blank I inserted to make the CSV file look pretty is being interpreted as a leading blank in the key name. Could this be your error?


RE: Error When Trying To Read CSV File - kaega2 - Dec-03-2021

(Dec-03-2021, 06:21 PM)deanhystad Wrote: I wrote this:
import pandas as pd

cars = pd.DataFrame({'cars_per_cap': [809, 731, 588, 18, 200, 70, 45], 'country': ['United States', 'Australia', 'Japan', 'India', 'Russia', 'Morocco', 'Egypt'], 'drives_right': ['true', 'false', 'false', 'false', 'true', 'true', 'true']})
cars.to_csv('cars.csv')
cars2 = pd.read_csv('cars.csv')
print(cars2['country'])
It produces this output:
Output:
0 United States 1 Australia 2 Japan 3 India 4 Russia 5 Morocco 6 Egypt Name: country, dtype: object
The csv file looks like this:
Output:
,cars_per_cap,country,drives_right 0,809,United States,true 1,731,Australia,false 2,588,Japan,false 3,18,India,false 4,200,Russia,true 5,70,Morocco,true 6,45,Egypt,true
Not everything is necessary. and the CSV file doesn't need underscores instead of spaces. I edited the CSV file to look like this:
Output:
cars per cap,country,drives right 809,United States,true 731,Australia,false 588,Japan,false 18,India,false 200,Russia,true 70,Morocco,true 45,Egypt,true
And ran this program:
import pandas as pd
print(pd.read_csv('cars.csv')['country'])
And it produced this output:
Output:
0 United States 1 Australia 2 Japan 3 India 4 Russia 5 Morocco 6 Egypt Name: country, dtype: object
I then modified the CSV file to look like this:
Output:
cars per cap, country, drives right 809,United States,TRUE 731,Australia,FALSE 588,Japan,FALSE 18,India,FALSE 200,Russia,TRUE 70,Morocco,TRUE 45,Egypt,TRUE
And I get this error:
Error:
Traceback (most recent call last): File "...", line 2, in <module> print(pd.read_csv('cars.csv')['country']) File "...\lib\site-packages\pandas\core\frame.py", line 3455, in __getitem__ indexer = self.columns.get_loc(key) File "...\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc raise KeyError(key) from err KeyError: 'country'
The dataframe keys are 'cars per cap', ' country', and ' drives right'. The blank I inserted to make the CSV file look pretty is being interpreted as a leading blank in the key name. Could this be your error?

THAT IS TOTALLY MY ERROR! Thank you for being so thorough!

No spaces between commas and the next entry. Got it. Thanks so much!!