>>4
sqlでの抽出は知らんけど、他の方法で抽出でけた

import pandas as pd
data=[
  [0,0,2470,0,0,27],
  [0,0,1570,0,0,0],
  [0,1580,1440,0,35,31],
  [0,1290,2878,0,0,31],
  [2522,885,940,31,0,0],
  [1527,1057,1639,28,5,31],
  [1527,1457,1639,28,26,31]]

df = pd.DataFrame(data)
def check(row):
  d = {1:25, 2:20, 3:15}
  return all(i[1] > d[len(row)] for i in row)

# 各PRICEと各P(%)の組をzipで作って、その中からPRICEがゼロのものを削除したものをcheck関数でチェック
[check([k for k in j if k[0]>0]) for j in [list(zip(i[:3], i[3:])) for i in df.values.tolist()]]
[True, False, True, False, False, False, True] # ブールインデックス作成

df2 = df[_] # ブールインデックスで抽出
df2.values.tolist()
[[0, 0, 2470, 0, 0, 27], [0, 1580, 1440, 0, 35, 31], [1527, 1457, 1639, 28, 26, 31]]