使用pandas合并了很多df

时间:2016-07-06 12:53:46

标签: python pandas

我有一个很大的df并使用' chunksize'划分它。 之后,我使用循环来完成df和下一个循环的间隔来做一些条件,然后我想合并所有这个df。我尝试连续(df)'但它返回错误。方法'加入'不方便,因为我有400 df。 我怎么能连接这个? 这段代码

el = pd.read_csv('df2.csv', iterator=True, chunksize=100000)
buys = pd.read_excel('smartphone.xlsx')
buys['date'] = pd.to_datetime(buys['date'])
dates1 = buys['date']
ids1 = buys['id']
for i in el:
i['used_at'] = pd.to_datetime(i['used_at'])
df = i.sort_values(['ID', 'used_at'])
dates = df['used_at']
ids = df['ID']
urls = df['url']
for i, (id, date, url, id1, date1) in enumerate(zip(ids, dates, urls, ids1, dates1)):
    df1 = df[(df['ID'] == ids1[i]) & (df['used_at'] < (dates1[i] + dateutil.relativedelta.relativedelta(days=5)).replace(hour=0, minute=0, second=0)) & (df['used_at'] > (dates1[i] - dateutil.relativedelta.relativedelta(months=1)).replace(day=1, hour=0, minute=0, second=0))]
    df1 = DataFrame(df1)
    if df1.empty:
        continue
    else:
        df_upd = concat(df1, ignore_index=True)
        book = load_workbook('report_buy2.xlsx')
        writer = pd.ExcelWriter('report_buy2.xlsx', engine='openpyxl')
        writer.book = book
        writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
        df_upd.to_excel(writer, "Main")

        writer.save()

1 个答案:

答案 0 :(得分:0)

pandas v0.18.1文档Merge, join, and concatenate将一个数据帧列表作为样本的concat函数的参数/参数:

import pandas as pd
# ... generate df1 et al.
frames = [df1, df2, df3]
result = pd.concat(frames)

在序言中它指出&#34; concat函数(在主pandas命名空间中)执行沿轴执行连接操作的所有繁重工作,同时执行索引的可选集合逻辑(并集或交集)(如果任何)在其他轴上。请注意,我说“如果有的话”,因为系列只有一个可能的连接轴。&#34;

因此,在您的情况下,df块也是数据帧应该被收集在一个容器中,然后该容器(上面命名为frames)被赋予concat函数以返回一个连接了所有块的新数据帧。 / p>

如果这个函数也接受一般的迭代,可能会在那里查找......