2016-07-21 6 views
2

Ich versuche, die Gehälter zu den Interners zu ändern, so dass ich dann eine Analyse machen und eine Tabelle ihres Preises pro Tonhöhe machen kann. Wenn ich das versuche, heißt das, dass der Datenrahmen nicht das Attribut to_numeric hat. Ich habe den Code der API DOCs bekommen, also habe ich mich gefragt, was passiert. Ist es eine Liste von DataFrames oder so etwas? Soll ich die Nummernzeichen ändern?Kann jemand diesen Fehler erklären [AttributError: 'DataFrame' Objekt hat kein Attribut 'to_numeric']

import pandas as pd 
import pandas_datareader.data as web 

players = pd.read_html('http://www.usatoday.com/sports/mlb/salaries/2013/player/p/') 


df1 = pd.DataFrame(players[0]) 
df1.drop(df1.columns[[0,3,4, 5, 6]], axis=1, inplace=True) 
df1.columns = ['Player', 'Team', 'Avg_Annual'] 
#print (df1.head(10)) 

p2 = pd.read_html('http://www.sportingcharts.com/mlb/stats/pitching-pitch-count-leaders/2013/') 


df2 = pd.DataFrame(p2[0]) 

df2.drop(df2.columns[[0,2, 3]], axis=1, inplace=True) 



#print (df2.head(10)) 

df1.set_index ('Player') 
df2.set_index('Player') 




df3 = pd.merge(df1, df2, on='Player') 

df3.set_index('Player', inplace=True) 
df3.columns = ['Team', 'Avg_Annual', 'Pitch_Count'] 
print (df3.head()) 

df3.to_numeric(Avg_Annual) 
values = (df3.Avg_Annual) - (df3.Pitch_Count) 

print (values.head()) 
+0

Bitte den Fehler im Code ausdrucken. –

+0

Traceback (jüngste Aufforderung zuletzt): File "/home/mdz5032/PMLB.py", Zeile 38, in df3.to_numeric (Avg_Annual) File „/usr/local/lib/python3.4/dist- packages/pandas/core/generic.py ", Zeile 2672, in __getattr__ return object .__ getattribute __ (self, Name) AttributError: 'DataFrame' Objekt hat kein Attribut 'to_numeric' – Mark

+0

Ich habe meine Antwort aktualisiert. Es funktioniert in meinem Fall, probiere es in deinem aus. –

Antwort

3

Die Art und Weise die Funktion der Aufruf beinhaltet das Modul und dann in der Spalte der DataFrame vorbei Sie ändern möchten, etwa so:

pd.to_numeric(df3.Avg_Annual) 

Sie werden einen anderen Fehler, da das Modul erhalten Dollarzeichen und Kommata können nicht in Zahlen konvertiert werden. Versuchen Sie folgendes:

values = [] 

for i in range(0, len(df3.Avg_Annual)): 
    values.append(int(df3.Avg_Annual[i][2:].replace(',','')) - df3.Pitch_Count[i]) 

Wenn Sie df3.Avg_Annual mit Werten ersetzt werden soll, führen Sie die folgenden Hinweise und sehen das Ergebnis:

for i in range(0, len(df3.Avg_Annual)): 
    df3.Avg_Annual[i] = (int(df3.Avg_Annual[i][2:].replace(',','')) - df3.Pitch_Count[i]) 
print (df3.head()) 

Wenn Sie das Format erneut hinzufügen möchten, ist es einfach.

Verwandte Themen