2015-11-21 25 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問題](http://meta.stackexchange.com/q/66377/184179)も参照してください。 –

+0

データフレームにリストを作成しているか、隣接する行に関数を適用しているという問題がありますか?この例ではリスト関数を任意に使用しましたが、一般的に隣接する行に関数を適用する方法にもっと関心があります。 – AJG519

+0

グループ内のサブデータフレームを受け入れる独自の関数を書くことができます。どの関数を適用しますか?または、隣接関係をグループ化する方法の質問ですか? –

答えて

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 
関連する問題