python-3.x 是否创建带条件的if语句?[duplicate]

aydmsdu9  于 2023-02-06  发布在  Python
关注(0)|答案(1)|浏览(171)
    • 此问题在此处已有答案**:

(13个答案)
2天前关闭。
我尝试使用3个字段"Status"、"Emp_Type"和"Check"创建一个if语句。我想删除不符合条件的行。但我一直收到错误:
ValueError:Series的真值不明确。请使用. empty、abool()、. item()、. any()或. all()
我试着将Series改为字符串,并在if语句中使用"and"和"&",但什么也没做。下面是我试过的代码和数据的样子:

#changing Fields from series to string.
df.Check.apply(str)
df.Status.apply(str)

#Dropping rows with conditions 
if(df['Check'] == 'Check') and (df['Emp_Type'] == 'Contractor') and (df['Status'] == 'T'):
   df.drop()

数据如下所示:

ID       Name       Status       Emp_Type          Check 
1234    John Doe       A          Contractor       Ignore 
1234    John Doe       T          Contractor       Ignore
1234    John Doe       A          Employee         Ignore
1234    John Doe       T          Contractor       Check
1234    John Doe       A          Employee         Ignore
1234    John Doe       T          Contractor       Check

我需要的是:

ID       Name         Status     Emp_Type        Check
1234     John Doe      A          Contractor     Ignore
1234     John Doe      T          Contractor     Ignore
1234     John Doe      A          Employee       Ignore
1234     John Doe      A          Employee       Ignore
gblwokeq

gblwokeq1#

Pandas的工作方式与标准的if语句稍有不同;至少,如果你考虑行或列的方式,你需要把单个的比较结果按布尔方式组合起来。
您可能需要:

selection = (df['Check'] == 'Check') & (df['Emp_Type'] == 'Contractor') & (df['Status'] == 'T')
df = df.drop(df.index[selection])
# or
df = df[~selection]

相关问题