2015-11-21 14 views
5

Aşağıdaki dataframe var ki:Pandalar dataframe satırların çiftlerinde fonksiyonu gerçekleştirir

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

I dataframe bitişik sıraların değerlerinin bir listesini yaratmak istiyoruz.

>>> 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] 

Bunu yapmanın en etkili yolu nedir: Ben çiftlerinin bir dizin oluşturursanız ben GroupBy kullanarak bu sonucu alabilirsiniz?

+0

en etkili yolu için:

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

ve sonra yapmanız gereken ne olursa olsun yapmak "Veri çerçevesindeki bitişik satırlar için bir değerler listesi oluşturmak istiyorum." değil mi Onu df olarak saklayın ve yapmanız gereken her şeyi yapın. Ayrıca bakınız [XY-problem] (http://meta.stackexchange.com/q/66377/184179). –

+0

Veri çerçevemde listeler oluşturduğum veya bitişik satırlara bir işlev uygulayacağım sorun nedir? Sadece bu örnekte liste işlevini kullandım ve genellikle bir işlevi bitişik satırlara nasıl uygulayacağım konusunda daha çok ilgileniyorum. – AJG519

+0

Grupta bir alt çerçeve kabul eden kendi işlevinizi yazabilirsiniz ... Hangi işlevi uygulamak istiyorsunuz? Ya da komşuların nasıl gruplandırılacağı sorusu mu? –

cevap

4
Sen (DataFrame mutasyona olmadan) tek seferde "adjacency" tarafından GroupBy yapabilirsiniz

:

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