2017-05-08 2 views
2

Ich habe einen numpy Array, wie folgend:Wie bekomme ich numpy arrays Indexierung in Pandas Datenrahmen äquivalent?

array([[1, 2], 
      [3, 4], 
      [5, 6], 
      [7, 8]]) 

Das Array ist myArray genannt, und ich führe zwei Indizierungsvorgänge auf dem Array 2D und folgende Ergebnisse erhalten:

In[1]: a1 = myArray[1:] 
      a1 

    Out[1]:array([[3, 4], 
       [5, 6], 
       [7, 8]]) 


    In[2]: a2 = myArray[:-1] 
      a2 

    Out[2]:array([[1, 2], 
        [3, 4], 
        [5, 6]]) 
Jetzt

, ich haben die gleichen Daten in Form eines Pandas df in zwei Spalten, lassen Sie den Datenrahmen df sein

 x y 
    0 1 2 
    1 3 4 
    3 5 6 
    4 7 8 

Wie t o Führen Sie die äquivalente Indexierung/Aufteilung in zwei Spalten durch, um die gleichen Ergebnisse wie oben für a1 und a2 zu erhalten.

+0

Sie können auf das darunter liegende numpy Objekt mit 'df.values'. –

Antwort

1

Verwendung iloc:

df.iloc[1:] 

# x y 
#1 3 4 
#3 5 6 
#4 7 8 

df.iloc[:-1] 

# x y 
#0 1 2 
#1 3 4 
#3 5 6 

Verwendung head/tail:

df.head(-1)  # equivalent to df.iloc[:-1] 

# x y 
#0 1 2 
#1 3 4 
#3 5 6 

df.tail(-1)  # equivalent to df.iloc[1:] 

# x y 
#1 3 4 
#3 5 6 
#4 7 8 
+0

Was ist, wenn es mehr Spalten in der df gibt, und ich möchte nur die Ergebnisse auf "x" und "y" Spalten erhalten. Ich weiß, dass ich die Spalten nach der Indizierung löschen kann, aber gibt es eine Möglichkeit, die Indizierung nur für ausgewählte Spalten durchzuführen? – Liza

+0

Wie wäre es mit 'df [['x', 'y']]]. Iloc [1:]'? Suchst du danach? – Psidom

+0

Vielen Dank, das ist was ich wollte. – Liza

Verwandte Themen