So I have a Pandas Dataframe and I am trying to find the length of said data frame to split it in half. However when using the code
half_df = len(df) // 2
I get the error: TypeError: 'float' object is not callable
I can't seem to get my head around the problem. Shouldn't the Pandas data frame be a Dataframe and not a float type ?
Complete code below:
df = pd.read_csv('dataframe.csv')
df
Symbol Description Category2 Category3 GICS Sector Market cap Dividend yield Price to TTM earnings Price to TTM sales Price to book value Action
0 AAPL Apple Inc Common stocks Large cap Information Technology $2,381,445,264,600 0.61% 23.36 6.17 35.33 Analyze
1 MSFT Microsoft Corp Common stocks Large cap Information Technology $1,842,074,858,614 1.00% 25.42 9.57 11.31 Analyze
2 GOOG Alphabet Inc Class C Common stocks Large cap Communication Services $1,164,555,710,000 0.00% 7.90 4.31 2.32 Analyze
....
half_df = len(df) // 2
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-26-e20afcd61c48> in <module>
----> 1 half_df = len(xrz) // 2
TypeError: 'float' object is not callable
CodePudding user response:
It appears that you have redefined the builtin len()
function, assigning the name len
to a float. That is, you must have done something like this earlier in your code:
len = 5.0
When you later write len(df)
, Python tries to call the float that has been assigned to len
, but floats are not callable, and so it raises an Exception.
This sort of bug is why it's a good idea to avoid re-defining builtins like len
. A linter like pylint can help find such oversights.