我正在尝试用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
但更重要的是对一个范围内的单个值进行分组。
答案 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