2017-11-20 4 views
0

私のようなデータフレーム肝炎:私は名前の各ペアの間隔を示し、列をレコード生成したいパンダで区間列を作成するにはどうしたらいいですか?

name1  name2 mounth 
A   B  01 
B   C  02 
A   B  02 
A   B  04 
B   C  03 

を:

name1  name2  interval 
A   B  [1,2];[4,4] 
B   C  [2,3] 

がパンダに上記コラムのような間隔を作成することが可能ですか?

+0

これは、2つのデータフレームの間の接続を作成することは困難です。あなたはあなたが望むものを詳しく説明できますか?データフレームにはセミコロンで区切られた値を入れることはできませんが、間隔を文字列として格納することをお勧めします。 – Sebastian

+0

2つのデータフレームからではなく、パンダに間隔の列を作成することが可能かどうかを知りたいのですが、私は1つのデータフレームを持っていて、name1とname2(つまりname1とname2は同じ名前です)、間隔の列は月の間隔を表します。 – sunny

答えて

3

あなたがこれを必要とする理由を理解するのは難しいです...

from itertools import chain 

df.groupby(['name1','name2']).mounth.\ 
    apply(lambda x :x.groupby(x.diff().ne(1).cumsum()).\ 
    apply(lambda y: list(chain.from_iterable([y])) if len(y)>1 else 
     list(chain.from_iterable([y,y])))).\ 
      groupby(level=['name1','name2']).apply(list) 
Out[1305]: 
name1 name2 
A  B  [[1, 2], [4, 4]] 
B  C    [[2, 3]] 
Name: mounth, dtype: object 
+0

ありがとう、実際には、動的グラフを作成するにはこの形式の間隔が必要です。 – sunny

+0

@sunny私はスピードを保証することはできませんが、これはあなたのサンプルの例でうまくいくはずです – Wen

関連する問題