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

如何在函数内基于索引同步删除两个DataFrame的对应行

解决方案

核心逻辑是先统一提取所有待删除的行索引,再同时对两个DataFrame执行删除操作,相比原循环逐次删除的写法效率更高,实现代码如下:

def filna_intake(df, labels):
    # 定义要删除的intake取值列表
    exclude_values = [
        'bottom 25% bottom 25%', 'top 25% top 25%', 'mid 50% mid 50%',
        'mid 50% top 25%', 'mid 50% bottom 25%', 'top 25% mid 50%', 
        'bottom 25% mid 50%', 'top 25% bottom 25%', 'bottom 25% top 25%'
    ]
    # 一次性获取所有待删除的索引
    drop_index = df.loc[df['intake'].isin(exclude_values)].index
    # 同时删除两个DataFrame的对应行
    df.drop(drop_index, inplace=True)
    labels.drop(drop_index, inplace=True)
    return df, labels
调用方式
predictors, labels = filna_intake(predictors, labels)
说明
  • 待删除索引通过df.loc[df['intake'].isin(exclude_values)].index直接获取,拿到的索引集合可以直接传入labels.drop方法实现对应行删除
  • 必须保证传入的predictors和labels索引严格对齐,即同一索引值对应同一条样本,才能保证删除的是匹配的行
  • 如果不想使用inplace参数(避免直接修改原变量产生副作用),可以改用如下无副作用的写法:
def filna_intake(df, labels):
    exclude_values = [
        'bottom 25% bottom 25%', 'top 25% top 25%', 'mid 50% mid 50%',
        'mid 50% top 25%', 'mid 50% bottom 25%', 'top 25% mid 50%', 
        'bottom 25% mid 50%', 'top 25% bottom 25%', 'bottom 25% top 25%'
    ]
    drop_index = df.loc[df['intake'].isin(exclude_values)].index
    df = df.drop(drop_index)
    labels = labels.drop(drop_index)
    return df, labels

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:01