将列添加到以块为单位的大型数据帧中

时间:2017-09-15 05:50:58

标签: python pandas dataframe

我有以下示例代码:

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)

如何在上面的数据框架中添加一个列,因为它有几百万条记录?

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

情景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