(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
答案 0 :(得分:1)
你试过了吗?
df.groupby(['date','amount']).transform('count')
答案 1 :(得分:-1)
要获得群组计数,我需要计算群组中的任何其他变量。这里唯一的问题是,当amount列为null时,size返回的是tract值,但这很容易处理。
df['group_size'] = df.groupby(['date','amount'])['tract'].transform('count')