2015-11-21 9 views
5

Sagen wir, ich habe folgende Datenrahmen:Funktion auf Paare von Reihen in Pandas Datenrahmen

>>> df=pd.DataFrame(data=['A','B','C','D','E'], columns=['Name']) 
>>> df 
    Name 
0 A 
1 B 
2 C 
3 D 
4 E 
>>> 

ich eine Liste von Werten für benachbarte Zeilen in der Datenrahmen erstellen möchten. Wenn ich einen Index von Paaren erstellen kann ich dieses Ergebnis erhalten, indem groupby mit:

>>> df.index=[0,0,1,1,2] 
>>> df.groupby(level=0).agg(lambda x: list(x)) 
    Name 
0 [A, B] 
1 [C, D] 
2  [E] 

Was ist der effizienteste Weg, dies zu tun?

+0

Der effizienteste Weg, um "Ich möchte eine Liste von Werten für benachbarte Zeilen im Datenrahmen erstellen." ist nicht. Halte es als df und mach was immer du tun musst. Siehe auch [XY-Problem] (http://meta.stackexchange.com/q/66377/184179). –

+0

Also das Problem, dass ich Listen in meinem Datenframe erstelle oder dass ich eine Funktion auf benachbarte Zeilen anwende? Ich habe in diesem Beispiel nur die Listenfunktion willkürlich verwendet und interessiere mich mehr allgemein dafür, wie man eine Funktion auf benachbarte Zeilen anwendet. – AJG519

+0

Sie können eine eigene Funktion schreiben, die einen Subdataframe in der groupby akzeptiert ... welche Funktion möchten Sie anwenden? Oder ist die Frage, wie man die Nachbarschaft gruppiert? –

Antwort

4

Sie von „adjacency“ in einem Rutsch GROUPBY können (ohne den Datenrahmen mutiert):

In [11]: g = df.groupby(df.index // 2) 

und dann tun, was es ist, dass Sie tun müssen:

In [12]: g.get_group(0) 
Out[12]: 
    Name 
0 A 
1 B 

In [13]: g.sum() 
Out[13]: 
    Name 
0 AB 
1 CD 
2 E 
Verwandte Themen