我正在尝试编写一个函数来扫描一组列并测试两个不同列行中是否存在两个条件。然后我将使用这个函数并将其应用到我的数据框。
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 |
您不需要函数:将
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%