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

如何先计算complete_versions,再据此生成df_1_new?

分步实现:筛选完整版本并生成目标数据集

需求说明

验证df_2中每个version对应的所有scope均存在于df_1中,先得到满足该条件的complete_versions列表,再基于此从df_1中筛选对应scope的记录生成df_1_new。

输入数据集

import pandas as pd

# 初始化df_1
df_1 = pd.DataFrame({
    'my_id': [23784, 23794, 23774, 22784, 23564, 20784],
    'scope': ['some_code', 'some_cod1', 'some_cod2', 'some_cod3', 'some_cod5', 'some_cod6'],
    'feat_1': ['Three', 'Seven', 'Three', 'Two', 'Five', 'Five'],
    'value_1': [30, 60, 90, 30, 20, 10],
    'value_2': [60, 40, 40, 10, 40, 70],
    'value_3': [60, 20, 60, 60, 20, 40],
    'date': ['2022-01-01', '2022-01-01', '2022-01-02', '2022-01-03', '2022-02-08', '2022-02-15']
})

# 初始化df_2
df_2 = pd.DataFrame({
    'scope': ['some_code', 'some_cod1', 'some_cod2', 'some_cod3', 'some_cod4', 'some_cod5', 'some_cod6', 'some_cod7'],
    'feat_1': ['Three', 'Seven', 'Three', 'Two', 'Four', 'Five', 'Five', 'Four'],
    'date': ['2022-01-01', '2022-01-01', '2022-01-02', '2022-01-03', '2022-01-05', '2022-02-08', '2022-02-15', '2022-02-15'],
    'version': [100, 100, 200, 350, 650, 700, 800, 800]
})

步骤1:生成complete_versions

核心逻辑是按version分组,校验组内所有scope都存在于df_1的scope集合中,再筛选出符合条件的行:

# 获取df_1中所有存在的scope集合,用于快速判断
df1_scope_set = set(df_1['scope'])

# 按version分组,检查每个组的所有scope是否都在df1_scope_set里
valid_versions = df_2.groupby('version').filter(
    lambda group: all(scope in df1_scope_set for scope in group['scope'])
)

# 提取需要的version和scope列,得到complete_versions
complete_versions = valid_versions[['version', 'scope']]

运行后得到的complete_versions:

version      scope
0      100  some_code
1      100   some_cod1
2      200   some_cod2
3      350   some_cod3
5      700   some_cod5

步骤2:生成df_1_new

从complete_versions中提取唯一的scope列表,再在df_1中筛选对应记录:

# 获取complete_versions中所有唯一的scope
valid_scopes = complete_versions['scope'].unique()

# 筛选df_1中scope属于valid_scopes的记录
df_1_new = df_1[df_1['scope'].isin(valid_scopes)]

运行后得到的df_1_new:

my_id      scope feat_1  value_1  value_2  value_3        date
0  23784  some_code  Three       30       60       60  2022-01-01
1  23794   some_cod1  Seven       60       40       20  2022-01-01
2  23774   some_cod2  Three       90       40       60  2022-01-02
3  22784   some_cod3    Two       30       10       60  2022-01-03
4  23564   some_cod5   Five       20       40       20  2022-02-08

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 03:15:36