如何用Python Pandas删除DataFrame中存入变量的指定无值行?
解决方案:从Pandas DataFrame中移除指定无值行
嘿,我懂你碰到的问题啦——dpop根本不是Pandas DataFrame的内置方法,这就是它没效果的原因😅。我们有两种很实用的方式可以帮你从new_df里移除那些存在novalue_df中的行,下面给你一步步说明:
方法一:直接利用反向布尔索引(推荐)
既然你已经写出了筛选目标行的条件,那我们只需要对这个条件取反,就能直接得到移除目标行后的DataFrame:
# 生成移除目标行后的新DataFrame,覆盖原变量 new_df = new_df[~(new_df['age'].isnull() & (new_df['churn'] == False) & (new_df['avgBill'] < 40))] # 如果想要原地修改原DataFrame(不需要重新赋值),可以这么写: new_df = new_df.loc[~(new_df['age'].isnull() & (new_df['churn'] == False) & (new_df['avgBill'] < 40)), :]
这里的~符号是取反操作,把原来筛选要删除行的条件,变成筛选要保留行的条件。
方法二:通过novalue_df的索引删除
如果你已经把要删除的行存在了novalue_df里,那可以直接借助它的索引来删除原DataFrame中的对应行:
# 生成新的DataFrame,移除目标行 new_df = new_df.drop(novalue_df.index) # 要是想直接修改原DataFrame(不生成新变量),加上`inplace=True`参数: new_df.drop(novalue_df.index, inplace=True)
⚠️ 注意:如果使用inplace=True,会直接修改原new_df,不需要再把结果赋值给它;如果不用这个参数,一定要把返回的新DataFrame赋值给new_df才能生效。
另外补充一句:你可能是把字典的pop()方法和DataFrame的方法搞混了,Pandas里确实没有dpop这个方法哦~
内容的提问来源于stack exchange,提问作者Elena Lanigan
相关产品推荐
相关产品推荐

