Map to List-fout: serieobject niet oproepbaar

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 mapkunt 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 listin Lverandert, 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 xmoet veranderen in een listobject. Het is een functie die een lijstobject maakt. Maar bovenaan heb je listopnieuw gedefinieerd:

list = pd.read_excel(file)

Nu is listnu 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 fooals 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

Other episodes