使用Pandas处理来自SQL的数据框时内核死亡

时间:2019-05-23 09:44:23

标签: python pandas kernel

当我尝试使用通过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错误。

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

2 个答案:

答案 0 :(得分:0)

尝试使用chunksize参数:

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

答案 1 :(得分:0)

我发现了一个解决问题的方法,以防有人随机发现以下问题:

问题出在我命名列的方式上。

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

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

df.columns=list

现在内核不再死亡。