向以分段方式检索的大型数据框添加列

python pandas dataframe

631 观看

1回复

51 作者的声誉

我有以下示例代码:

def return_table_df(table_name, chunksize,conn):

        try:                
            df = pandas.read_sql_table(table_name,conn, chunksize=chunksize)            
            return df            
        except Exception as e:
            logging.error(e)

data_frame_chunks = return_table_df('table_name',100000,connection)

我该如何向上述数据框中添加一列,由于其中包含几百万条记录,因此正在按块检索该列?

我希望有一种替代方法,可以将整个数据帧加载到内存中,然后添加列。

提前致谢。

作者: Abhi 的来源 发布者: 2017 年 9 月 15 日

回应 1


1

169166 作者的声誉

决定

方案1
创建一个空白列。这很简单,只需为数据框分配一个新列即可。您需要对的返回值进行read_sql_table迭代,这是一个迭代器。

def return_table_df(table_name, chunksize, conn):
    df_list = []
    for df in pandas.read_sql_table(table_name, conn, chunksize=chunksize) 
        df['blank'] = np.nan 
        df_list.append(df)  

    return pd.concat(df_list, ignore_index=True)           

方案2
将现有系列添加为新列。仅在最后添加列可能会更简单。

s = ... # your series

def return_table_df(table_name, chunksize,conn):
    df_list = []
    for df in pandas.read_sql_table(table_name, conn, chunksize=chunksize) 
        df_list.append(df)  

    df = pd.concat(df_list, ignore_index=True)  
    df['newCol'] = s

    return df
作者: cs95 发布者: 2017 年 9 月 15 日
32x32