我将尝试根据第二个数据框中定义的区间对第一个数据框中的数据进行分组。我认为可以通过pd.bin和pd.merge的某种组合来实现这一目标?
基本上,每个数据框目前都处于以下形式:
我希望能够匹配bin,并使用包含df中perc值的cut_min和cut_max,在df2中找到相应的结果。因此,我希望结果表格看起来像这样:
如果有人知道如何使用Pandas来做这件事,那将不胜感激!(而且这是我第一次在stack overflow上没能找到解决方案,如果上面的任何内容没有解释清楚,敬请谅解!)
基本上,每个数据框目前都处于以下形式:
df = pd.DataFrame({'id':['a', 'b', 'c', 'd','e'],
'bin':[1, 2, 3, 3, 2],
'perc':[0.1,0.9,0.3,0.7,0.5]})
df2 = pd.DataFrame({'bin':[1, 1, 1, 2, 2, 2, 3, 3, 3],
'result':['low', 'medium','high','low', 'medium','high','low', 'medium','high'],
'cut_min':[0,0.2,0.6,0,0.3,0.7,0,0.4,0.8],
'cut_max':[0.2,0.6,1,0.3,0.7,1,0.4,0.8,1]})
df:
bin id perc
1 a 0.1
2 b 0.9
3 c 0.3
3 d 0.7
2 e 0.5
以下是带垃圾桶的表格,df2:
bin cut_max cut_min result
1 0.2 0.0 low
1 0.6 0.2 medium
1 1.0 0.6 high
2 0.3 0.0 low
2 0.7 0.3 medium
2 1.0 0.7 high
3 0.4 0.0 low
3 0.8 0.4 medium
3 1.0 0.8 high
我希望能够匹配bin,并使用包含df中perc值的cut_min和cut_max,在df2中找到相应的结果。因此,我希望结果表格看起来像这样:
bin id perc result
1 a 0.1 low
2 b 0.9 high
3 c 0.3 low
3 d 0.7 medium
2 e 0.5 medium
我最初是在SQL查询中编写了这个任务,使用join就很简单实现:
select
df.id
, df.bin
, df.perc
, df2.result
from df
inner join df2
on df.bin = df2.bin
and df.perc >= df2.cut_min
and df.perc < df2.cut_max
如果有人知道如何使用Pandas来做这件事,那将不胜感激!(而且这是我第一次在stack overflow上没能找到解决方案,如果上面的任何内容没有解释清楚,敬请谅解!)
pd.merge
。第二种选择更容易编码。 - unutbu