2015-11-21 36 views
5

Nói rằng tôi có dataframe sau:Thực hiện chức năng trên cặp hàng trong Pandas dataframe

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

Tôi muốn tạo ra một danh sách các giá trị cho các hàng liền kề trong dataframe. Nếu tôi tạo chỉ mục các cặp, tôi có thể nhận kết quả đó bằng cách sử dụng groupby:

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

Cách hiệu quả nhất để làm điều này là gì?

+0

Cách hiệu quả nhất để "Tôi muốn tạo danh sách các giá trị cho các hàng liền kề trong khung dữ liệu". là không. Giữ nó như là df và làm bất cứ điều gì nó là bạn cần phải làm. Xem thêm [XY-problem] (http://meta.stackexchange.com/q/66377/184179). –

+0

Vì vậy, vấn đề là tôi đang tạo danh sách trong khung dữ liệu của mình hoặc tôi đang áp dụng hàm cho các hàng lân cận? Tôi chỉ sử dụng chức năng danh sách một cách tùy tiện trong ví dụ này và tôi quan tâm hơn đến cách áp dụng một hàm cho các hàng liền kề. – AJG519

+0

Bạn có thể viết chức năng của riêng bạn chấp nhận một subdataframe trong groupby ... bạn muốn áp dụng chức năng nào? Hoặc là câu hỏi làm thế nào để nhóm kề? –

Trả lời

4

Bạn có thể groupby bởi "kề" trong một đi (không có đột biến các DataFrame):

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

và sau đó làm bất cứ điều gì bạn cần làm:

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 
Các vấn đề liên quan