Wie man die letzten N Zeilen eines pandas DataFrame?
Ich habe pandas dataframe df1
und df2
(df1 ist vanila dataframe, df2 ist indiziert durch 'STK_ID' & 'RPT_Date') :
>>> df1
STK_ID RPT_Date TClose sales discount
0 000568 20060331 3.69 5.975 NaN
1 000568 20060630 9.14 10.143 NaN
2 000568 20060930 9.49 13.854 NaN
3 000568 20061231 15.84 19.262 NaN
4 000568 20070331 17.00 6.803 NaN
5 000568 20070630 26.31 12.940 NaN
6 000568 20070930 39.12 19.977 NaN
7 000568 20071231 45.94 29.269 NaN
8 000568 20080331 38.75 12.668 NaN
9 000568 20080630 30.09 21.102 NaN
10 000568 20080930 26.00 30.769 NaN
>>> df2
TClose sales discount net_sales cogs
STK_ID RPT_Date
000568 20060331 3.69 5.975 NaN 5.975 2.591
20060630 9.14 10.143 NaN 10.143 4.363
20060930 9.49 13.854 NaN 13.854 5.901
20061231 15.84 19.262 NaN 19.262 8.407
20070331 17.00 6.803 NaN 6.803 2.815
20070630 26.31 12.940 NaN 12.940 5.418
20070930 39.12 19.977 NaN 19.977 8.452
20071231 45.94 29.269 NaN 29.269 12.606
20080331 38.75 12.668 NaN 12.668 3.958
20080630 30.09 21.102 NaN 21.102 7.431
Bekomme ich die letzten 3 Zeilen von df2 von:
>>> df2.ix[-3:]
TClose sales discount net_sales cogs
STK_ID RPT_Date
000568 20071231 45.94 29.269 NaN 29.269 12.606
20080331 38.75 12.668 NaN 12.668 3.958
20080630 30.09 21.102 NaN 21.102 7.431
während df1.ix[-3:]
geben Sie alle Zeilen:
>>> df1.ix[-3:]
STK_ID RPT_Date TClose sales discount
0 000568 20060331 3.69 5.975 NaN
1 000568 20060630 9.14 10.143 NaN
2 000568 20060930 9.49 13.854 NaN
3 000568 20061231 15.84 19.262 NaN
4 000568 20070331 17.00 6.803 NaN
5 000568 20070630 26.31 12.940 NaN
6 000568 20070930 39.12 19.977 NaN
7 000568 20071231 45.94 29.269 NaN
8 000568 20080331 38.75 12.668 NaN
9 000568 20080630 30.09 21.102 NaN
10 000568 20080930 26.00 30.769 NaN
Warum ? Wie man die letzten 3 Zeilen von df1
(dataframe ohne index) ?
Pandas 0.10.1
- Sie können
df[-3:]
auf die Ergebnisse, die Sie wollen. Dies wurde gelöst, als ein Problem, durch WesM. Nicht sicher, ob/Wann er die erste Feste: stackoverflow.com/questions/14035817/... - Ich glaube nicht, dass das stimmt. Ich denke, negative slicing mit
ix
war ein Fehler, aber die Weitergabe negativer Scheiben zu__getitem__
ist nicht.df.iloc[-3:]
intern die Delegierten__getitem__
mit den gleichen Argumenten, tundf[-3:]
ist eine Abkürzung fürdf.iloc[-3:]
, kein Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vergessen Sie nicht
DataFrame.tail
! z.B.df1.tail(10)
Dies ist aufgrund der Verwendung von integer-Indizes (
ix
selektiert, die durch label über -3 anstatt position, und das ist by design: siehe integer Indizierung in pandas "Fallstricke"*).*In neueren Versionen von pandas bevorzugen loc oder iloc zu entfernen, die Mehrdeutigkeit von ix, als position oder label:
sehen die docs.
Als Wes Punkte heraus, in diesem speziellen Fall sollten Sie nur verwenden, Schwanz!
Wenn Sie schneiden durch die position
__getitem__
(D. H., das schneiden mit[]
) funktioniert gut, und ist das prägnanteste Lösung habe ich gefunden für dieses problem.Dies ist das gleiche wie der Aufruf
df.iloc[-3:]
zum Beispiel (iloc
intern die Delegierten__getitem__
).Als beiseite, wenn Sie wollen, finden die letzten N Zeilen für jede Gruppe verwenden
groupby
undGroupBy.Schwanz
: