pandas - Unable to call value_counts on a new column -


i created new column in dataset so:

df['new_col'] = [ true if v > 0 else false v in df.old_col ] 

when call value_counts() on new column, works when do

df['new_col'].value_counts() # works fine 

but

df.new_col.value_counts()  

gives error:

attributeerror: 'list' object has no attribute 'value_counts' 

i'm pretty confused why happens...can not use dot syntax on new columns? advice appreciated, thanks!

as noted alexander, looks you've set attribute rather new series. must assign new column using bracket notation:

in [11]: df = pd.dataframe([[1, 2], [3, 4]], columns=['a', 'b'])  in [12]: df['c'] = [1, 2]  in [13]: type(df.c) out[13]: pandas.core.series.series 

without assigning attribute (and pandas doesn't know want column):

in [14]: df.d = [1, 2]  in [15]: type(df.d) out[15]: list 

you can't access attribute using bracket notation:

in [16]: df['d'] keyerror: 'd' 

for reason, use bracket notation consistently throughout code, way - , reader - know it's column... (explicit better implicit).

note: useful behaviour, (for 1 thing) allows set meta-data dataframe. can assign attribute (or method) pd.dataframe can used dataframe.

in [21]: pd.dataframe.x = 1  in [22]: df.x out[22]: 1 

(this can useful, use sparingly!!!)


Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -