首页 > 解决方案 > 如何在 IF 语句的上下文中使用 Python Pandas isin()

问题描述

在这里解决问题时遇到了一些麻烦,可以使用一些建议。

col_list = ['Task1','Task2']
        
if new_temp_df['Task Type'].isin(col_list):    ### THIS IS THE OFFENDING LINE!

     temp_list2.append(new_temp_df['Job Number'])
     results2_df = results2_df.append({
                            'Job Number': new_temp_df['Job'],
                            'Task1': 'Yes',
                            'Task1 Runs': new_temp_df['Runs'],
                            'Task2': 'Yes',
                            'Task2 Runs': new_temp_df['Runs'],
                            'Campaign-level Match': 'Yes',
                            }, ignore_index=True)

else:
    pass ..........

我不断收到错误:

ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

例如,我尝试过适合的变体(基于谷歌搜索)

if new_temp_df['Task Type'].isin(col_list).all()

if np.where(new_temp_df['Task Type'].isin(col_list))

没有喜悦。

期望的最终目标

  1. 读取数据框,其中“任务类型”字段中的所有值都根据 [col_list] 中提供的列表进行检查。
  2. 如果 [col_list] 变量中的这两个值都存在 - TRUE,如果不存在:FALSE
  3. 在 IF 语句级别进行评估 - 返回 bool 值(希望所有人从此过上幸福的生活)

拜托,任何想法都会很棒。我看到 isin() 用于所有功能,但没有在 IF 语句中使用 - 非常有兴趣了解该方法。

提前谢谢大家

标签: python-3.xpandasdataframeif-statementisin

解决方案


any可用于if conditional.

玩具示例:

输入设置

col_list = ['Task1','Task2']

df = pd.DataFrame({
    'Task Type':['Test1', 'Task1'],
    'val':[1,2]
})
df

输入df

Task Type   val
0   Test1   1
1   Task1   2

代码

if any(df['Task Type'].isin(col_list)):
    print('task')

输出

task

推荐阅读