2017-07-13 45 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 ...也就表现 –

相关问题