Pandas groupby和唯一的申请很慢

时间:2018-08-07 01:31:47

标签: python performance pandas group-by

我是熊猫的新手,所以如果答案很明显,我会提前道歉,但是我找不到关于该主题的任何答案。 我有一组大约200万行的数据,我试图按一个列分组并创建唯一列表作为其他两列的聚合值:

    keys = # list of keys from an s3 paginator
    dfs = []
    for key in keys:
        print(key)
        match = re.search('^[\d]{4}-[\d]{2}-[\d]{2}/(.*)/(.*)_batch_request.csv$', key, re.IGNORECASE)
        df = pd.read_csv('s3://{}/{}'.format(bucket, key), names = ['id'])
        df['environment']=match.group(1)
        df['request_id']=match.group(2)
        dfs.append(df)
    all = pd.concat(dfs).reset_index()
    all.groupby('id').agg({'environment': 'unique', 'request_id': 'unique'})

最后一行将原始集减少到大约30万行,这需要几分钟。分组所需的时间似乎与帧的初始大小没有直接关系,因为尝试使用较小的输入会产生非常相似的结果。

也许我弄错了,但是我期望具有4Gb RAM的i7的性能要快得多。如果我仅使用nunique而不是unique来计算唯一元素,那么它将运行约15秒。

我做错了还是这是预期的性能?

谢谢

0 个答案:

没有答案