1

我有一个df包含三列的数据集:'String_key_val', 'Float_other_val1', 'Int_other_val2'. 我想对 key_val 进行分组,然后针对这些组提取val1(resp. ) 的总和。val2这是我的代码:

df = pandas.read_csv('test.csv')
grouped = df.groupby('String_key_val')
series_calculus1 = grouped['Float_other_val1'].sum()
series_calculus2 = grouped['Int_other_val2'].sum()

res = pandas.concat([series_calculus1, series_calculus2], axis=1)
res.to_csv('output_test.csv')

我的问题是:我的入口数据集是 10GB,我有 4Go Ram,所以我需要对我的微积分进行分块,但我看不出如何。我想过使用HDFStore,但由于我只需要构建一个数字数据集,我认为存储 complete 没有意义DataFrame,而且我认为HDFStore不能存储简单的数组。我能做些什么?

4

1 回答 1

0

I believe a simple approach would be something along these lines....

import pandas as pd

summary = pd.DataFrame()
chunker = pd.read_csv('test.csv',iterator=True,chunksize=50000)

for chunk in chunker:
    group = chunk.groupby('String_key_val')
    out = group[['Float_other_val1','Int_other_val2']].sum()
    summary = summary.append(out)
    summary = summary.reset_index()
    group = summary.groupby('String_key_val')
    summary = group[['Float_other_val1','Int_other_val2']].sum()
于 2015-01-19T00:17:54.450 回答