Ik krijg een foutmelding:
serie-object niet oproepbaar
en het wijst naar de regel x = list(x)
.
Antwoord 1, autoriteit 100%
Maar ik denk dat je map
kunt weglaten en eenvoudig aftrekken kunt gebruiken en vervolgens kunt converteren naar list
:
symb = get_history(symbol='INFY',start = start,end = end)
print ((symb.tail(3).High - symb.tail(3).Low).tolist())
Gebruik ook geen variabele list
(gereserveerd woord in python) in plaats van L
(of iets anders):
L = pd.read_excel(file)
L = L['SYMBOL']
Voorbeeld:
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]
BEWERKEN:
Ik probeer een probleem te simuleren:
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
Als list
in L
verandert, is het belangrijk om de Python-console opnieuw te openen, omdat nog steeds dezelfde fout optreedt.
Dit werkt dus perfect:
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]
Antwoord 2, autoriteit 99%
list(x)
betekent normaal gesproken dat je x
moet veranderen in een list
object. Het is een functie die een lijstobject maakt. Maar bovenaan heb je list
opnieuw gedefinieerd:
list = pd.read_excel(file)
Nu is list
nu een pandas series
-object (zoals de foutmelding zegt), en het functioneert niet als een functie, dwz het is niet callable
, het kan niet worden gebruikt met ()
.
Gebruik een andere naam voor dit object. Gebruik een gekke naam zoals foo
als je geen betere omschrijving kunt bedenken.
Antwoord 3
Het probleem is dat je het reservewoord opnieuw hebt toegewezen
list = pd.read_excel(file)
list = list['SYMBOL']
vandaar de lijst hier is slechts een lijst van ['S', 'Y', 'M', 'B'..]
. Gebruik een andere naam voor deze definitie, het programma zal goed werken