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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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