2017-07-13 60 views
1
pysql = lambda q: pdsql.sqldf(q, globals()) 
    str1 = "select coalesce(ID1, H_ID, [Alternate Source Unique 
    Identifier]) as Master_ID, [Alternate Source Unique Identifier] as Q_ID 
    from crosswalk;" 
    with Timer("Load master_ids:"): 
    master_id_list = pysql(str1) 
    print("Records: {}".format(len(master_id_list))) 
    master_id_list.head() 

pySQL運行只需5秒鐘!想用熊貓讓它看起來/像sql一樣工作

我想用Python語言編寫的第二個腳本,因爲我不能用pysql :(,任何想法?在Python,請您第二個腳本的最好的翻譯?

我已經做了2個命題,但沒有真正有效在時間 第一個沒有熊貓(這是必要的)

def coalesce (df, column_names): 
    i=iter(column_names) 
    column_name=next(i) 
    answer=df[colum_name] 
    for column_name in i: 
    answer = answer.fillna(df[column_name]) 
    return answer 
    coalesce(df, ['first', 'third', 'second']) 

謝謝您的建議!

+0

爲什麼你使用''副本()''方法?我認爲這會造成很多開銷。 – Dimgold

+0

謝謝,你建議你代替複製什麼? –

回答

0

如果你需要的是來計算記錄(len(master_id_list))的數項,你可以舉ST直接使用它:

crosswalk['ID'].size

crosswalk.shape

,如果你正在尋找獨特價值,嘗試:

crosswalk['ID'].unique().size

+0

謝謝你好,但我需要使用腳本2中的想法重新編寫第一個腳本......這是否使感覺? –

+0

我可能會錯過一些東西 - 你不打印結果的數量? – Dimgold

+0

我只是想使用熊貓,並使它看起來像SQL ...也就表現 –

相關問題