【问题标题】:Kernel dies when using pandas to work on dataframe from sql使用 pandas 处理来自 sql 的数据帧时,内核死机
【发布时间】:2019-10-09 20:43:51
【问题描述】:

当我尝试使用我使用 sql 查询获得的数据更改数据帧时,我的内核死了。

我减少了数据量,增加了 RAM,并注释掉了经常导致内核崩溃的代码。

    python
    import pandas as pd
    import sqlalchemy
    sql_str = """some sql query limit 100""" 
    df = pd.read_sql(sql_str, engine)   
    list=[
    '1st name','2nd name'] 
    for i in range(0,len(list)):
        df.columns.values[i]=list[i]
    #naming the columns of my df
    df=df[df["tradedate"]<'01-01-2017']
    #this is a line of code that sometimes crashes the kernel
    df['strike']=pd.to_numeric(df["strike"],errors='coerce')
    #another one

我希望有一个干净的数据框可供我使用,但内核死了,我得到了一个 Windows 错误。

如果有人能在这里帮助我,我将非常感激!

【问题讨论】:

  • 能否请您在 Jupyter 上逐行运行代码,让我们知道是哪一行导致了内核问题?
  • 我正在这样做,问题是它不一致。有时整个代码都会运行,有时它会在第一次数据帧操作时死掉,大部分时间介于两者之间。

标签: python pandas kernel


【解决方案1】:

尝试使用chunksize参数:

df = pd.read_sql(sql_str, engine, chunksize=20) #try different values

【讨论】:

    【解决方案2】:

    我找到了问题的解决方案,以防有人随机发现这个问题:

    问题来自我命名列的方式。

    for i in range(0,len(list)):
          df.columns.values[i]=list[i]
    

    不起作用。相反,我使用:

    df.columns=list
    

    现在内核不再死机了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-07
      • 2018-03-04
      • 2017-02-04
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多