You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将df1的binfig字段合并到df2的区间(bins)数据中?

将df1的binfig字段匹配到df2的区间数据并关联

1. 预处理df2的区间字段

首先拆分df2中的bin列,提取区间的上下限数值,方便后续判断:

import pandas as pd

# 示例数据
df1 = pd.DataFrame({"cust_id": ['ooo'],
                    "amount": [1000],
                    "group":[10],
                    "binfig":[600]})

df2 = pd.DataFrame({"ID": ['x1','x2'],
                     "bin":["600 to 650","651 to 670"]})

# 拆分区间字符串,转为整数类型的上下限列
df2[['lower', 'upper']] = df2['bin'].str.split(' to ', expand=True).astype(int)

2. 匹配区间并关联数据

可以通过交叉合并后过滤条件的方式,精准匹配binfig所属的区间,最终得到关联结果:

# 交叉合并两个数据集,再过滤符合区间条件的行
merged_df = df1.assign(key=1).merge(df2.assign(key=1), on='key').drop('key', axis=1)
merged_df = merged_df[(merged_df['binfig'] >= merged_df['lower']) & (merged_df['binfig'] <= merged_df['upper'])]

3. 最终输出结果

执行上述代码后,merged_df即为关联后的数据集:

cust_id  amount  group  binfig ID         bin  lower  upper
0     ooo    1000     10     600 x1  600 to 650    600    650

如果数据量较大,想要更高效的映射方式,可以使用pd.cut直接匹配区间对应的ID:

# 构造区间边界,包含最低值确保匹配
bins = [df2['lower'].min() - 1] + df2['upper'].tolist() + [df2['upper'].max() + 1]
df1['matched_ID'] = pd.cut(df1['binfig'], bins=bins, labels=df2['ID'], include_lowest=True)

内容的提问来源于stack exchange,提问作者user1000x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:15:43