groupby子范围 - 熊猫

时间:2017-12-09 17:05:24

标签: python pandas dataframe

我正在尝试用pandas做一个非常复杂的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中的每个开始端也将始终包含或等于DF1中的一个时隙。

我需要做的是根据保留其属性的DF1插槽对DF2进行分组:

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

我无法在pandas API上找到合理的流程,我尝试检查: Pandas Groupby Range of Values

但更重要的是对一个范围内的单个值进行分组。

1 个答案:

答案 0 :(得分: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