2015-11-21 49 views
5

說我有以下數據框:在大熊貓數據幀上執行對行的功能

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

我想創建一個在數據幀相鄰行值的列表。如果我創建對索引我可以通過使用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] 

什麼是這樣做的最有效的方法是什麼?

+0

的最有效的方法「我想創建數據框中相鄰行的值列表。」是不。保持它作爲DF,並做任何你需要做的事情。另見[XY-problem](http://meta.stackexchange.com/q/66377/184179)。 –

+0

所以是我在我的數據框中創建列表的問題,或者我正在將函數應用到相鄰的行?在這個例子中,我只是使用了列表函數,並且對如何將函數應用於相鄰行更感興趣。 – AJG519

+0

你可以編寫你自己的函數來接受groupby中的一個子數據框...你想應用什麼函數?或者是如何由鄰接關係組成的問題? –

回答

4

您可以通過「鄰接」一次GROUPBY(無變異數據幀):

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

,然後做什麼是你需要做的:

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