2017-01-25 3 views
2

Mein Datenrahmen sieht wie folgt:Pandas - wählen letzte n Zeilen von Datenrahmen in Bezug auf ein Attribut

id, date, target 
1,2016-10-24,22 
1,2016-10-25,31 
1,2016-10-27,44 
1,2016-10-28,12 
2,2016-10-21,22 
2,2016-10-22,31 
2,2016-10-25,44 
2,2016-10-27,12 

die Datenrahmen oben gegeben, ich letzte 2 Reihen IDs auswählen möge eine df2 zu machen, und eine andere df1 mit dem Rest.

df1

id, date, target 
1,2016-10-24,22 
1,2016-10-25,31 
2,2016-10-21,22 
2,2016-10-22,31 

df2

id, date, target 
1,2016-10-27,44 
1,2016-10-28,12 
2,2016-10-25,44 
2,2016-10-27,12 

Wie kann ich das tun?

Vielen Dank im Voraus.

Antwort

1

Sie GroupBy.taildf2 zum Erstellen verwenden können, erhalten dann difference von Original mit df1 Index und wählen Sie durch loc Zeilen aus df - das ist df1:

df2 = df.groupby('id').tail(2) 
print (df2) 
    id  date target 
2 1 2016-10-27  44 
3 1 2016-10-28  12 
6 2 2016-10-25  44 
7 2 2016-10-27  12 

print (df.index.difference(df2.index)) 
Int64Index([0, 1, 4, 5], dtype='int64') 

df1 = df.loc[df.index.difference(df2.index)] 
print (df1) 
    id  date target 
0 1 2016-10-24  22 
1 1 2016-10-25  31 
4 2 2016-10-21  22 
5 2 2016-10-22  31 
1
+0

@Join Zwinck Danke. Aber ich habe meine Frage bearbeitet. Kannst du meine Frage noch einmal beantworten? – Mansumen

+0

@Mansumen: Bitte nehmen Sie sich etwas Zeit, um zu versuchen, was ich vorgeschlagen habe, und versuchen Sie dann, selbst an dem Code zu arbeiten, um den Rest zu erledigen. Beachten Sie, dass Sie 'groupby' nicht unbedingt verwenden müssen - vielleicht finden Sie es einfacher, einen anderen Ansatz zu verwenden. Versuche es. –

Verwandte Themen