【问题标题】:want to use panda to make it look/work like sql想使用 panda 让它看起来/像 sql 一样工作
【发布时间】:2017-07-13 05:41:44
【问题描述】:
    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 秒即可运行!!

我想在 python 中编写第二个脚本,因为我不能使用 pysql :(,有什么想法吗?请你对 python 中的第二个脚本进行最佳翻译?

我做了两个命题,但从时间上看不是很有效 第一个没有 Pandas(这是必需的)

    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'])

感谢您的建议!

【问题讨论】:

  • 你为什么使用copy()方法?我认为它会产生很多开销。
  • 谢谢,你建议用什么来代替复制?

标签: python mysql pandas pysqlite


【解决方案1】:

如果您只需要计算记录数(len(master_id_list)),您可以直接使用它:

crosswalk['ID'].size

crosswalk.shape

如果您正在寻找独特的价值,请尝试:

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

【讨论】:

  • 谢谢 好的,但是我需要使用脚本 2 中的想法重新设计第一个脚本...这样做有意义吗?
  • 我可能遗漏了一些东西 - 你不只是打印结果的数量吗?
  • 我只是想用 panda 让它看起来像 sql ......在性能方面也是如此
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
相关资源
最近更新 更多