Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在需要groupby操作时处理分块数据_Python_Pandas_Pytables_Hdfstore - Fatal编程技术网

Python 在需要groupby操作时处理分块数据

Python 在需要groupby操作时处理分块数据,python,pandas,pytables,hdfstore,Python,Pandas,Pytables,Hdfstore,我有一个数据集df,有三列:“String\u key\u val”,“Float\u other\u val1”,“Int\u other\u val2”。我想按键值分组,然后提取这些组的val1(分别为val2)之和。这是我的密码: df = pandas.read_csv('test.csv') grouped = df.groupby('String_key_val') series_calculus1 = grouped['Float_other_val1'].sum() series

我有一个数据集
df
,有三列:
“String\u key\u val”
“Float\u other\u val1”
“Int\u other\u val2”
。我想按键值分组,然后提取这些组的
val1
(分别为
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内存,所以我需要将我的演算分块,但我不知道如何分块。我曾想过使用
HDFStore
,但由于我只需要构建一个数字数据集,因此我认为没有必要存储完整的
DataFrame
,而且我认为
HDFStore
不能存储简单的数组。
我能做些什么?

我相信一个简单的方法就是这样

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()