python:将组大小连接到dataframe中的成员行

时间:2014-09-13 17:23:16

标签: python pandas

(Python 2.7)我希望在python数据框中创建一个列,其中包含成员行所属的组的大小(按行ID号索引)。组基于两列中具有相同值的行,日期和金额。我试图使用groubpy和size - 建议用于类似的问题 - 但由于索引问题,我无法将结果大小值返回到源数据帧。我应该使用字典来读取所有唯一值配对,那会是什么样子?或者我应该学习如何使用连接操作将groupby对象合并到原始数据框。注意:这是大数据集。

示例数据:

                    date    amount  address
    ID          
    176820  1/4/2008 0:00   400     13496 ST LOUIS
    176821  1/4/2008 0:00   500     13475 NEWBERN
    176822  1/4/2008 0:00   2000    8011 DAYTON
    176823  1/4/2008 0:00   4000    13406 LONGVIEW
    176824  1/4/2008 0:00   7000    19174 ARCHDALE

以下是我认为可行的方法:

    df['group_size'] = df.groupby(['date','amount']).size()

但我收到了这个:TypeError:插入列的不兼容索引与帧索引

更新:elyase的解决方案适用于我发布的原始样本数据。我的源数据框实际上有13列,而不是3,但是即使在样本框中添加了一个额外的列,elyase的解决方案也不起作用。

                     date  amount         address    tract
    ID                                                    
    176820  1/4/2008 0:00     400  13496 ST LOUIS   510200
    176821  1/4/2008 0:00     500   13475 NEWBERN   510400
    176822  1/4/2008 0:00    2000     8011 DAYTON   526200
    176823  1/4/2008 0:00    4000  13406 LONGVIEW   504200
    176824  1/4/2008 0:00    7000  19174 ARCHDALE   540200

我收到错误:错误的项目数量为1,索引意味着2

2 个答案:

答案 0 :(得分:1)

你试过了吗?

df.groupby(['date','amount']).transform('count')

答案 1 :(得分:-1)

要获得群组计数,我需要计算群组中的任何其他变量。这里唯一的问题是,当amount列为null时,size返回的是tract值,但这很容易处理。

    df['group_size'] = df.groupby(['date','amount'])['tract'].transform('count')