首页 > 解决方案 > 在尝试执行复杂查询(Pandas)时收到错误“无法使用 dtyped [object] 数组和 [bool] 类型的标量执行 'ror_'”

问题描述

我有一个熊猫数据框,例如:

CLIENT | CAMPAING START DATE
CLIENT1| Jul/21
CLIENT2| Aug/21

我想删除某个客户和某个月份的一些行。我写:

df.loc[~((df['CLIENT'].str.contains('CLIENT1') & (df['CAMPAIGN START DATE']=="Jul/21" | df['CAMPAIGN START DATE']=="Aug/21" | df['CAMPAIGN START DATE']=="Sep/21" | df['CAMPAIGN START DATE']=="Oct/21" | df['CAMPAIGN START DATE']=="Nov/21" | df['CAMPAIGN START DATE']=="Dec/21") ))]

我收到此错误消息:

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

为什么?

标签: python-3.xpandas

解决方案


在您的解决方案中缺少(),但可以通过以下方式简化测试成员的解决方案Series.isin

df.loc[~((df['CLIENT'].str.contains('CLIENT1') & ((df['CAMPAIGN START DATE']=="Jul/21") | (df['CAMPAIGN START DATE']=="Aug/21") | (df['CAMPAIGN START DATE']=="Sep/21") | (df['CAMPAIGN START DATE']=="Oct/21" )| (df['CAMPAIGN START DATE']=="Nov/21") | (df['CAMPAIGN START DATE']=="Dec/21")) ))]

df.loc[~(df['CLIENT'].str.contains('CLIENT1') & 
         df['CAMPAIGN START DATE'].isin(["Jul/21","Aug/21","Sep/21","Oct/21","Nov/21","Dec/21"])) ]

推荐阅读