【发布时间】:2018-10-29 22:49:29
【问题描述】:
我正在尝试列出熊猫系列中每个组中的元素数量。在我的数据框中,我有一个名为 ID 的列,所有值都出现多次。我想制作一个列表,其中包含每个元素出现的频率。
所以列ID的一个例子是[1,2,3,3,3,2,1,5,2,3,1,2,4,3]
这应该会产生[3,4,5,1,1],因为组 ID 1 出现了 3 次,组 ID 2 出现了 4 次等等。我编写了一个完美的代码:
group_list = df.ID.unique().tolist()
group_size = []
for i in group_list:
group_size.append(df.ID.value_counts()[i])
问题是它需要很长时间才能完成。我有 500 万行,我让它运行了 50 分钟,但它仍然没有完成!我尝试在前 30-50 行运行它,它按预期工作。
对我来说,简单地使用value_counts(sort=False) 是合乎逻辑的,但它并没有按照它们在我的系列中出现的顺序为我提供组 ID 频率。我也尝试实现扩展,因为我读到它应该更快,但我得到了"numpy.int64 object is not iterable"。
【问题讨论】: