python - 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)]
解决方案
Pythonor
用作中缀关键字
df["fyear"] != 2009 or df["fyear"] !=2019 or df["fyear"] !=2020
甚至更好(更pythonic,也更易读)
df["fyear"] not in (2009,2019,2020)
推荐阅读
- javascript - Leaflet-React:L 未定义
- reactjs - 构建受保护的路线时,反应应用程序中没有历史记录属性
- reactjs - 如何在本机反应中获取获取的响应时间?
- r - 使用数据和分组的方法绘制线图
- c# - Redis C# - 在事务中使用 Incr 值
- java - 使用优先级通过集合和过滤器进行流式传输
- javascript - 打印传递的参数增加的数字,每次传递相同的数字
- office365 - 通过 Microsoft Graph API 访问多个用户收件箱?
- react-native - React-native,通过导航 v4 将参数传递给导航 v5
- c# - 如何判断 EF Core 实体上的哪些属性已更改?