我有一个包含三列的数据集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
,但由于我只需要构建一个数值数据集,我认为没有必要存储完整的DataFrame
,我认为HDFStore
不能存储简单的数组。
我该怎么办?
答案 0 :(得分:0)
我相信一个简单的方法就是这样......
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()