Arbeitet derzeit an einem Dataset mit Pandas. Haben Sie nicht viel Erfahrung mit dieser Art von Sachen, so würde jede Hilfe sehr geschätzt werden. Daten-Set (siehe unten):TypeError: Numpy.float64 Objekt ist nicht aufrufbar Iterationsreihen Pandas Datenrahmen
Die Tabelle zeigt Ratings mit unterschiedlichen Segmenten nach Jahren gruppiert verbunden. Ich versuche, die Tabelle zu analysieren und die neueste Bewertung aus der zugehörigen Jahrespalte (ohne Nans) zu ziehen und sie an der entsprechenden Stelle in der Spalte Curr_Rate
zusammen mit dem Jahr anzuwenden, in dem die Bewertung in der Curr_RatingYr
erfasst wurde. Die zweite Aufgabe besteht darin, die zweitjüngste Bewertung (mit dem jeweiligen Jahr) zu ziehen und diese Werte in die Felder Prev_Rate
und PrevRatingYr
aufzufüllen. Schließlich muss ich Durchschnittswerte aus allen verfügbaren Bewertungen 2000-2017 generieren. Ich habe den mittleren Teil nach unten, aber wenn ich versuche, und analysiere, um die Tabellenwerte für Nennstrom zu erzeugen und Zurück Bewertung Ich traf mit:
TypeError stating numpy.float64 object is not callable at index 0
Jede Hilfe wäre sehr geschätzt.
df = pd.read_excel('CurrPrevRate1.xlsx')
df.head()
dftest = df[:100]
# Replace zeros with NaN
dftest[['y2000', 'y2001', 'y2002', 'y2003', 'y2004', 'y2005', 'y2006','y2007', 'y2008', 'y2009', 'y2010', 'y2011', 'y2012', 'y2013', 'y2014', 'y2015', 'y2016', 'y2017']] = dftest[['y2000','y2001', 'y2002', 'y2003', 'y2004', 'y2005', 'y2006','y2007', 'y2008', 'y2009', 'y2010', 'y2011', 'y2012', 'y2013', 'y2014', 'y2015', 'y2016', 'y2017']].replace(0, np.nan)
#Change all values in these columns to floats
#dftest[['y2000', 'y2001', 'y2002', 'y2003', 'y2004', 'y2005', 'y2006','y2007', 'y2008', 'y2009', 'y2010', 'y2011', 'y2012', 'y2013', 'y2014', 'y2015', 'y2016', 'y2017']] = dftest[['y2000', 'y2001', 'y2002', 'y2003', 'y2004', 'y2005', 'y2006','y2007', 'y2008', 'y2009', 'y2010', 'y2011', 'y2012', 'y2013', 'y2014', 'y2015', 'y2016', 'y2017']].apply(pd.to_numeric)
#Get average of rows
dftest['AvgRating'] = dftest[['y2000', 'y2001', 'y2002', 'y2003', 'y2004', 'y2005', 'y2006','y2007', 'y2008', 'y2009', 'y2010', 'y2011', 'y2012', 'y2013', 'y2014', 'y2015', 'y2016', 'y2017']].mean(axis=1)
def getCurrRate():
for x in dftest['y2017']:
if 0 <= x <= 10:
return x
else:
for y in dftest['y2016']:
if 0 <= y <= 10:
return y
else:
for z in dftest['y2015']:
if 0 <= z <= 10:
return z
else:
return 'N/A'
dftest['Curr_Rate'] = dftest[['y2000', 'y2001', 'y2002', 'y2003', 'y2004', 'y2005', 'y2006','y2007', 'y2008', 'y2009', 'y2010', 'y2011', 'y2012', 'y2013', 'y2014', 'y2015', 'y2016', 'y2017']].apply(getCurrRate(), axis=1)
dftest
Können Sie (a) tatsächlich, Inline-Daten statt ein Screenshot, und (b) der erwartete Eingang und Ausgang ? Allgemeiner gesagt, erhalten Sie bessere Hilfe, wenn Sie ein [minimales, vollständiges und verifizierbares Beispiel] (https://stackoverflow.com/help/mcve) veröffentlichen. –