2017-12-09 23 views
0

私はパンダとかなり複雑なgroupby操作を実行しようとしています。 2つのデータフレームを検討:groupbyの範囲の範囲 - パンダ

df1: 
begin, end, y 
0, 3, string10 
3, 7, string11 


df2: 
begin, end, x 
0, 2, string1 
1, 2, string2 
3, 4, string3 
4, 6, string4 

この二DFは、いくつかの特性を有するタイムスロットを表します。 DF1は大きなタイムスロットを含み、その境界線は常にDF2より大きい。 また、DF2の各begin endは、常にDF1のタイムスロットの1つに含まれるか、または等しくなります。 Pandas Groupby Range of Values

:私はチェックしてみました

result: 
index, slot, begin_df2, end_df2, x, y 
0, (0,3), 0, 2, string1, string10 
, (0,3), 1, 2, string2, string10 
1, (3,6), 3, 4, string3, string11 
, (3,6), 4, 6, string4, string11 

私は、このためのパンダのAPIで、合理的な流れを見つけることができません。私がする必要がどのような

はDF1スロットに保ち、その性質に応じてグループDF2にあります

しかし、ある範囲内の単一の値をグループ化する方がますます重要になります。

+0

は、グループ化、複数のレベルを試してみてください - https://stackoverflow.com/questions/42998660/pandas-how-to-groupby-with-count -with-multiple-levels-on-rows – Tanu

答えて

0

あなたの間隔はDF1で互いに交差していない場合は

df1['key']=df1.iloc[:,:1].mean(1) 
df2['key']=df2.iloc[:,:1].mean(1) 
df=pd.merge_asof(df2,df1,on='key') 
df 
Out[401]: 
    begin_x end_x   x key begin_y end_y   y 
0  0  2 string1 0.0  0  3 string10 
1  1  2 string2 1.0  0  3 string10 
2  3  4 string3 3.0  3  7 string11 
3  4  6 string4 4.0  3  7 string11 
+0

これは少し問題です。重なり合う可能性はありませんが、df1の要素にdf2の要素が含まれていない場合があります。私はまだそれがNaNとのテーブルにある必要があります。 – user3741859

+0

@ user3741859あなたはdfをdf2とマージすることができます:-) – Wen