简体   繁体   中英

got error while using loc in python pandas

I am new to python and learning pandas myself. So I get the result for the first syntax but not for the second syntax. As per my understanding, we are using loc for label. So, we should be able to mention the column name inside the parenthesis. Could you please help me out?

df1['EdLevel'].value_counts()--this gives the results

df1.loc['EdLevel'].value_counts()---gives error while running.

The error is something like this:

    KeyError                                  Traceback (most recent call last)
    ~\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
       2645             try:
    -> 2646                 return self._engine.get_loc(key)
       2647             except KeyError:
    
    pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
    
    pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
    
    pandas\_libs\index_class_helper.pxi in pandas._libs.index.Int64Engine._check_type()
    
    KeyError: 'EdLevel'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-105-bc8968bf3244> in <module>
----> 1 df1.loc['EdLevel'].value_counts()

Generally, The first syntax you mentioned is used to acess column. But, you can also acess column using df.loc[] also. It can be done as below.

import pandas as pd
df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      index=['cobra', 'viper', 'sidewinder'],
      columns=['max_speed', 'shield'])
        max_speed shield
cobra       1       2
viper       4       5
sidewinder  7       8
df.loc[:,'shield'] # acess entire 'shield' column

cobra         2
viper         5
sidewinder    8
Name: shield, dtype: int64

You can also acess multiple columns. df.loc[:,['shield','max_speed']] but you cannot use value_counts() method while acessing multiple columns as it returns dataframe not series.

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