2017-02-19 4 views
0

Können wir sowohl die Zeile als auch die Spalte in Pandas ohne mit .iloc indizieren? Die Dokumentation sagtmöglicher Index nach Spaltennummer (ohne Label) ohne Iloc?

Mit DataFrame schneidet Slicing innerhalb von [] die Zeilen.

Aber wenn ich Zeile und Spalte auf die gleiche Weise einfügen möchte, funktioniert es nicht.

data = pandas.DataFrame(np.random.rand(10,5), columns = list('abcde')) 
    data[0:2] #only rows 
    data.iloc[0:2,0:3] # works. 
    data[0:2,0:3] # not working in python, but it works similarly in R 
+1

Was ist falsch an der Verwendung von '.iloc []'? – MaxU

+0

Ich habe zuerst R gelernt und bin nicht ganz mit dem Python vertraut. Außerdem braucht es etwas mehr Tipparbeit. – alphabetagamma

+0

In Pandas würden Sie '.loc [rows, columns]' für das Label Slicing oder '.iloc [row #, col #]' für das positionelle Slicen verwenden. Docs: http://pandas.pydata.org/pandas-docs/stable/indexing.html#slicing-ranges – MaxU

Antwort

1

Ich bin damit einverstanden, dass iloc verwendet, ist wahrscheinlich die klarste Lösung, aber die Indizierung durch Zeilen- und Spaltennummer kann gleichzeitig mit zwei separaten Indizierungsvorgänge durchgeführt werden. Es sei denn, Sie iloc verwenden, glaube ich nicht, Pandas weiß, wenn Sie für die Spalten Nummer 0-3 suchen, oder Spalten mit den Namen 0, 1, 2 und 3

data[0:2][data.columns[0:3]] 

Das ist ziemlich klar, obwohl in zeigt genau das, was du wählst. Andernfalls müssen Sie in die Array-Indizierung wechseln, um Ihre Teilmenge zu erhalten.

data.values[0:2,0:3] 
Verwandte Themen