Map to List Error: Series Object Not Callable
from nsepy import get_history
from datetime import date
import datetime
import pandas as pd
import numpy as np
file = r'C:\Users\Raspberry-Pi\Desktop\Desktop\List.xlsx'
list = pd.read_excel(file)
list = list['SYMBOL']
start = date.today()-datetime.timedelta(days = 10)
end = date.today()
symb = get_history(symbol='INFY',start = start,end = end)
h = symb.tail(3).High.tolist()
l = symb.tail(3).Low.tolist()
print(type(h))
print(type(l))
x =  map(lambda a,b:a-b,h,l)
print(type(x))
x = list(x)

I am getting error:

series object not callable

and its pointing to x = list(x) line.

1

3 Answers

list(x) normally means turn x into a list object. It's a function that creates a list object. But near the top you redefined list:

list = pd.read_excel(file)

Now list is now a pandas series object (as the error message says), and it does not function as a function, i.e. it is not callable, it cannot be used with ().

Use a different name for this object. Use a silly name like foo if you can't think of a better descriptor.

But I think you can omit map and use simple subtract and then convert to list:

symb = get_history(symbol='INFY',start = start,end = end)
print ((symb.tail(3).High - symb.tail(3).Low).tolist())

Also don't use variable list (reserved word in python) rather L (or something else):

L = pd.read_excel(file)
L = L['SYMBOL']

Sample:

import pandas as pd

symb = pd.DataFrame({'High':[8,9,7,5,3,4],'Low':[1,2,3,1,0,1]})
print (symb)
   High  Low
0     8    1
1     9    2
2     7    3
3     5    1
4     3    0
5     4    1

print ((symb.tail(3).High - symb.tail(3).Low).tolist())
[4, 3, 3]

EDIT:

I try simulate problem:

list = pd.DataFrame({'SYMBOL':['sss old','dd','old']})
print (list)
     SYMBOL
0  sss old
1       dd
2      old

list = list['SYMBOL']
print (list)
0    sss old
1         dd
2        old
Name: SYMBOL, dtype: object

print (type(list))
<class 'pandas.core.series.Series'>

x = [1,2,3]

#list is Series, not function
x = list(x)
print (x)
TypeError: 'Series' object is not callable

If change list to L, is important reopen python console, because still same error.

So this works perfectly:

df = pd.DataFrame({'SYMBOL':['sss old','dd','old']})
print (df)
     SYMBOL
0  sss old
1       dd
2      old

L = df['SYMBOL']
print (L)
0    sss old
1         dd
2        old
Name: SYMBOL, dtype: object

x = [1,2,3]
x = list(x)
print (x)
[1, 2, 3]

The problem is that you have reassigned reserve word

list = pd.read_excel(file) 
list = list['SYMBOL']

hence list here is just a list of ['S', 'Y', 'M', 'B'..]. Use another name for this definition the program will work fine

8

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest