Search code examples
pythonpandasdataframetypeerror

TypeError: 'Series' object is not callable when accessing dtypes of a dataframe


As it is [Duplicate], I have raised this to be removed. Kindly do not rollback.


Solution

  • There's no ambiguity here. file is a dataframe, and dtypes is an attribute.

    df
            productView  order
    userId                    
    A               4.5    5.0
    B               1.5    2.5
    C               4.0    2.0
    D               2.0    3.0
    
    df.dtypes
    productView    float64
    order          float64
    dtype: object
    

    When you access dtypes, a Series is returned:

    type(df.dtypes)
    pandas.core.series.Series
    

    When you call df.dtypes(), you are effectively doing series = df.dtype; series() which is invalid, since series is an object (not a function, or an object with __call__ defined).

    In the second case, dtype isn't even a valid attribute/method of df, and so an AttributeError is raised.

    TLDR; The first error is raised on the dtype series, the second is raised on the original dataframe df.