2016-12-16 3 views
0

Ich versuche, eine Funktion zu schreiben, die eine bestimmte Spalte von einem Pandas DataFrame aufruft, die ich zuvor in meinem Code definiert habe.Wie definiere ich eine Funktion/Makro, die eine bestimmte Datenrahmenspalte in Python aufruft?

Der Datenrahmen kann etwas Einfaches wie

df = pd.DataFrame(
         { 
         'col0': np.random.randint(0,100,100), 
         'col1': np.random.randint(0,100,100), 
         'col2': np.random.randint(0,100,100) 
          } 
         ) 

Der nächste Schritt wäre, eine Funktion zu schreiben, die col0, col1 oder col2 nennt.

def hist(x): 
    return np.histogram(
         df['x'], 
         bins = 6 
         ) 

Wenn Sie jedoch die Funktion durch den im Datenrahmen definierten Spaltennamen aufrufen, erkennt Python den Namen nicht;

In [1]: hist(col1) 
Traceback (most recent call last): 

    File "<ipython-input-68-e860df6abc8e>", line 1, in <module> 
    hist(col1) 

NameError: name 'col1' is not defined 

Gibt es dafür einen Workaround?

+0

Sie haben gerade eine Strings Giot gemischt Variablennamen. 'df ['x']' muss 'df [x]' sein, und 'col1' im Funktionsaufruf muss' "col1" 'sein. – DyZ

Antwort

0

Sie mischen Strings und Variablen. Sie wollen wahrscheinlich etwas wie

def hist(x): 
    return np.histogram(
         df[x], # no quotes! You want the value of x here, not a literal "x" 
         bins = 6 
         ) 

und es so nennen:

foo = hist('col1') # quotes necessary since you're passing the string "col1" 

Andernfalls Python für eine Variable sieht col1 genannt, und das ist nicht definiert worden.

0

sollten Sie die Anführungszeichen der x entfernen und eine Zeichenfolge als Funktionseingang mit dem Namen der Spalte setzen:

def hist(x): 
    return np.histogram(df[x], bins = 6) 

hist('col1') 
Verwandte Themen