按范围的子范围分组

2024-06-25 05:51:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着用熊猫做一个相当复杂的分组操作。 考虑两个数据帧:

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中的一个时隙。你知道吗

我需要做的是根据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

但它更适合于在一个范围内对单个值进行分组。你知道吗


Tags: 数据属性enddf1时隙df2beginstring1
1条回答
网友
1楼 · 发布于 2024-06-25 05:51:41

如果您的间隔在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

相关问题 更多 >