(Python 2.7)我希望在python数据帧中创建一列,其大小与成员行所属的组的大小相同(通过行ID编号进行索引)。分组基于日期和金额这两列中具有相同值的行。我尝试使用groubpy和size -这是针对类似问题的建议-但由于索引问题,我无法将结果大小值传回源数据帧。我是否应该使用字典来读取所有唯一值对,那会是什么样子?或者,我应该学习如何使用join操作将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的解决方案适用于我发布的原始样本数据。我的源dataframe实际上有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
发布于 2014-09-14 01:59:37
您是否尝试过:
df.groupby(['date','amount']).transform('count')发布于 2014-09-14 23:26:57
为了得到组数,我需要对组中的任何其他变量进行计数。这里唯一的问题是,在amount列为空的情况下,size返回trace值,但这很容易处理。
df['group_size'] = df.groupby(['date','amount'])['tract'].transform('count') https://stackoverflow.com/questions/25825720
复制相似问题