Python中drop函数无法批量删除指定行?技术求助
问题分析与解决
你的问题根本不是Python不能多次执行drop,而是代码逻辑出错了:每次你都是从原始的train_copy里删除数据,而非基于前一次处理好的train_filtered继续操作。
比如第一次执行train_filtered = train_copy.drop(...),确实得到了去掉'o'的数据集,但第二次又重新从train_copy里删除'h',把结果赋值给train_filtered——等于第一次的操作完全被覆盖,最后只保留了去掉'h'的原始数据,自然还剩'o';调换顺序同理,最后只去掉了'o',剩下'h'。
正确写法有这几种:
方法一:基于前一次结果继续删除
train_filtered = train_copy.drop(train_copy[train_copy['class'] == 'o'].index) # 这里改用train_filtered作为操作对象,而非原始的train_copy train_filtered = train_filtered.drop(train_filtered[train_filtered['class'] == 'h'].index) train_filtered['class'].value_counts()
方法二:直接筛选目标类别(更简洁高效)
既然只需要's'和'd',直接用isin筛选比两次删除更直观:
train_filtered = train_copy[train_copy['class'].isin(['s', 'd'])] train_filtered['class'].value_counts()
方法三:使用query方法
train_filtered = train_copy.query("class in ['s', 'd']") train_filtered['class'].value_counts()
内容的提问来源于stack exchange,提问作者Vishal
相关产品推荐
相关产品推荐

