Oracle查询转换为pandas操作实现筛选符合条件的PARAM1唯一值
实现方案
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'PARAM1': ['A', 'A', 'B', 'B'], 'PARAM2': ['X', 'Y', 'X', 'Y'], 'VALUE': ['TUE, WED', 'NO', 'MON, WED', 'YES'] }) # 定义两个满足任意即可的过滤条件 cond1 = (df['PARAM2'] == 'X') & df['VALUE'].str.contains('MON') cond2 = (df['PARAM2'] == 'Y') & (df['VALUE'] == 'YES') # 筛选符合条件的行后取PARAM1去重值 result = df.loc[cond1 | cond2, 'PARAM1'].unique() # 输出结果 print(result.tolist())
运行输出为['B'],和需求预期一致。
逻辑说明
- 条件
cond1对应SQL中param2 = 'X' AND REGEXP_LIKE(value, 'MON')逻辑,通过pandas字符串方法str.contains实现包含匹配 - 条件
cond2对应SQL中param2 = 'Y' AND param3 = 'YES'逻辑 - 两个条件用
|(或运算符)拼接,筛选出满足任意一个条件的行 - 最后调用
.unique()方法实现和SQLDISTINCT等价的去重效果
内容的提问来源于stack exchange,提问作者banana_99
相关产品推荐
相关产品推荐

