如何创建一个 pandas 函数来测试多个 pandas 列中是否存在两个字符串

问题描述 投票:0回答:1

我正在尝试编写一个函数来扫描一组列并测试两个不同列行中是否存在两个条件。然后我将使用这个函数并将其应用到我的数据框。

pattern_one = 'Test1|Exam12'

df = pd.DataFrame({'Project Code':['32132','212132'],'Task Name':['Test 1','Test13']})

def data_filter(project_code, task_name):
    
    if (project_code.str.contains('32132').any() & 
    task_name.str.contains(pattern_one, regex=True).any()):

    output = '45%'
    return(output)
    
    elif:

    output = '0%'
    return(output)

数据框看起来像这样:

项目代码 任务名称
32132 测试1
212132 测试13
python pandas apply
1个回答
0
投票

您不需要函数:将

np.where
与条件以及 if-true 和 if-false 值一起使用。

import pandas as pd
import numpy as np

df = pd.DataFrame({"Project Code": ["32132", "212132"],
                   "Task Name" : ["Test1", "Test13"]
                   })

df['out'] = np.where((df["Project Code"].str.contains('32132')) &
                     (df["Task Name"].str.contains('Test1|Exam12')), "45%", "0%")

print(df)

给出:

  Project Code Task Name  out
0        32132     Test1  45%
1       212132    Test13   0%
© www.soinside.com 2019 - 2024. All rights reserved.