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!!
|