简体   繁体   中英

Accessing specific data in an object created from a .csv file python

I hope you can help me here, this is probably something simple but its driving me crazy trying to figure it out. So I have used pandas to read data from a csv file into an object "data". If I run "print(data)" I get the first section from the command line below. I want to access the name and the price. "print(data.at[i, "Name"])" works great for the Name column, where I is just a loop counter and represents the rows. However I can't access the price. I thought "print(data.at[i, "price"])" would have worked but it throws the error as you can see from the command line read out below. My full code follows the command line read out.

Comand Line read out

                                                   Name  SKU Regular price
0     30″ Straight Long Ponytail by Exposed Luxury H...  NaN           NaN

1     30″ Straight Long Ponytail by Exposed Luxury H...  NaN         £6.95

2     30″ Straight Long Ponytail by Exposed Luxury H...  NaN         £6.95

3     30″ Straight Long Ponytail by Exposed Luxury H...  NaN         £6.95

4     30″ Straight Long Ponytail by Exposed Luxury H...  NaN         £6.95

...                                                 ...  ...           ...

2814        Yankee Candle Large Jar - Fairy Floss (1pc)  NaN        £10.50

2815  Yankee Candle Large Jar - Midnight Magnolia (1pc)  NaN        £10.50

2816      Yankee Candle Large Jar - Rose Lemonade (1pc)  NaN        £10.50

2817  Yankee Candle Large Jar - Tropical Fruit Punch...  NaN        £10.50

2818  YSL Touche Eclat Illuminating Pen 2.5ml No.1 (...  NaN        £15.95

[2819 rows x 3 columns]
30″ Straight Long Ponytail by Exposed Luxury Hair (1pc) - 1001 - Light Blonde, 1 Piece
Traceback (most recent call last):
  File "C:\Python310\lib\site-packages\pandas\core\indexes\base.py", line 3629, in get_loc
    return self._engine.get_loc(casted_key)
  File "pandas\_libs\index.pyx", line 136, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\index.pyx", line 163, 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
KeyError: 'price'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\drwyn\OneDrive\Desktop\Amazon\Scraper\scrape2.py", line 9, in <module>
    print(data.at[i, "price"])
  File "C:\Python310\lib\site-packages\pandas\core\indexing.py", line 2275, in __getitem__
    return super().__getitem__(key)
  File "C:\Python310\lib\site-packages\pandas\core\indexing.py", line 2226, in __getitem__
    return self.obj._get_value(*key, takeable=self._takeable)
  File "C:\Python310\lib\site-packages\pandas\core\frame.py", line 3615, in _get_value
    series = self._get_item_cache(col)
  File "C:\Python310\lib\site-packages\pandas\core\frame.py", line 3931, in _get_item_cache
    loc = self.columns.get_loc(item)
  File "C:\Python310\lib\site-packages\pandas\core\indexes\base.py", line 3631, in get_loc
    raise KeyError(key) from err
KeyError: 'price'

My code


    import pandas as pd
    data = pd.read_csv("data.csv")

    print(data)

    i = 1
    while i < 6:
      print(data.at[i, "Name"])
      print(data.at[i, "price"])
      i += 1

A KeyError indicates no column called 'price' exists - maybe a space got in the way?

Try calling data.columns to see the exact names of your columns.

I believe the issue is with your column name. It looks like "Regular price" to me.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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