Pandas如何对isin条件取反 筛选DataFrame不在指定列表的行
正确写法
你只需要将~放在isin()返回的布尔条件表达式最前方即可,完整代码如下:
df = {} df['cgo_eafapo_t'] = pd.read_sql_table('cgo_eafapo_t', engine, schema_z2, columns = cols) df['cgo_eafapo_t'] = df['cgo_eafapo_t'][~df['cgo_eafapo_t']['art_kennz'].isin(['I1','I2','I3','I4'])]
错误原因说明
你之前几种写法的报错原因分别如下:
- 第一种写法:
~放在了筛选得到的DataFrame前,~仅支持对布尔序列做取反操作,直接对DataFrame取反会触发类型不支持的报错。 - 第二种写法:错误对
['art_kennz']这个Python列表调用isin()方法,列表本身没有isin属性,只有Pandas的Series对象才有该方法,因此触发属性错误。 - 第三种写法:
~放在了DataFrame和筛选条件中间,不符合Pandas的布尔索引语法,无法正常执行。
内容的提问来源于stack exchange,提问作者user13067694
相关产品推荐
相关产品推荐

