![](/img/trans.png)
[英]How to filter the pandas dataframe when one cell value of all columns equals to a specific string
[英]PSQL - How to filter out if a column value equals a specific string
我創建了一個名為option的列的數據庫,其中值是'Call','Put'或None的varchar。 當我設置數據庫時,如果沒有Call或Put,我將默認值設為None。
我正在嘗試過濾掉包含'Call'或'Put'選項的行。 但是,當我寫查詢時
SELECT * FROM holdings h WHERE h.option!='Call'AND h.option!='Put';
I get this error:
curr.execute('SELECT option FROM holdings WHERE option != 'Call';')
^
SyntaxError: invalid syntax
當我嘗試使用NOT LIKE'%Call%'時出現此錯誤:
curr.execute('SELECT option FROM holdings AS h WHERE option NOT LIKE '%Call%';')
NameError: name 'Call' is not defined
任何幫助,將不勝感激
謝謝!
代碼如下所示:
import psycopg2
import csv
conn = psycopg2.connect('dbname = db user = asmith')
curr = conn.cursor()
curr.execute('SELECT option FROM holdings h WHERE option NOT LIKE '%Call%';')
tups = curr.fetchall()
for tup in tups:
print tup
編輯:當我運行這兩行時:
curr.execute('SELECT * FROM holdings h WHERE option = \'Call\' OR option = \'Put\';')
curr.execute('SELECT * FROM holdings h WHERE option != \'Call\' AND option != \'Put\';')
第一個查詢給了我所有帶有Call或Put的行,但是當我運行第二個查詢時,我什么也得不到,即使它理論上應該給我所有帶有None選項的行。 有誰知道那是為什么?
看起來像語法錯誤:
curr.execute('SELECT option FROM holdings h WHERE option NOT LIKE '%Call%';')
字符串1是'SELECT option FROM holdings h WHERE option NOT LIKE '
,打破'
(在%Call%
之前),然后是一些名為Call的變量(你的編譯器找不到),然后是String 2 ';'
你必須逃離'
像這樣反斜杠:
curr.execute('SELECT option FROM holdings AS h WHERE option NOT LIKE \\'%Call%\\';')
聲明中存在邏輯錯誤。 你應該寫這個:
SELECT * FROM holdings h WHERE h.option != 'Call' OR h.option != 'Put';
或這個:
SELECT * FROM holdings h WHERE h.option NOT IN ( 'Call' , 'Put');
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.