【发布时间】:2019-01-24 14:37:38
【问题描述】:
我想知道是否有人知道我目前正在做的更好的方法。这是一个示例数据集:
ID Number
a 1
a 2
a 3
b 4
c 5
c 6
c 7
c 8
示例:如果我想按上表中的 ID 列计算数字。我会先做一个 groupby ID 并对 Number 进行计数,然后将结果合并回原始表,如下所示:
df2 = df.groupby('ID').agg({'Number':'count'}).reset_index()
df2 = df2.rename(columns = {'Number':'Number_Count'})
df = pd.merge(df, df2, on = ['ID'])
这会导致:
这感觉像是一种迂回的方式,有没有人知道更好的选择?我问的原因是因为在处理大型数据集时,这种方法会消耗大量内存(通过创建另一个表然后合并它们)。
【问题讨论】:
-
是的,在广播结果时使用
transform -
df.groupby('ID')['ID'].transform('count') -
这个不错,谢谢你的帮助!
-
我真的不同意重复,因为问题在于更有效的方法。根据数据框,
transform并不是最快的方法。
标签: python pandas merge group-by