首页 > 解决方案 > TypeError:无法使用 dtyped [float64] 数组和 [bool] 类型的标量执行“ror_”

问题描述

我想遍历该列df['fyear']并删除fyear不等于 2009、2019 或 2020 的任何行。但出现此错误:

TypeError: Cannot perform 'ror_' with a dtyped [float64] array and scalar of type [bool]

df = pd.DataFrame({'fyear': [2009, 2019, 2020, 2020, 2019, 2009, 2000, 2000, 2001]})

for row in df.iterrows():
    if df["fyear"] != 2009 | df["fyear"] !=2019 | df["fyear"] !=2020:
        df.drop(row)

编辑最佳解决方案是使用布尔索引与运算符&|

df = df[(df['fyear'] == 2009) | (df['fyear'] == 2019) | (df['fyear'] == 2020)]

标签: pythonpandasdataframebooleaniteration

解决方案


Pythonor用作中缀关键字

df["fyear"] != 2009 or df["fyear"] !=2019 or df["fyear"] !=2020

甚至更好(更pythonic,也更易读)

df["fyear"] not in (2009,2019,2020)

推荐阅读