伯爵已经使用了ids熊猫

时间:2017-05-18 11:29:03

标签: python pandas

我有一个问题,我需要计算已使用的ID。在我的数据集中有一些属性:myViewGroup.addView(myView); 女巫看起来像这样:

id, time, Bi

属性描述:

  • id time Bi | wanted_results used 1 3 NAN | 0 [] 1 3 1 | 1 [1] 1 2 NAN | 1 [1] 2 2 1 | 2 [1, 2] 2 1 1 | 2 [1, 2] 2 1 1 | 2 [1, 2] - 代表我们的重点
  • id - 用于时间线,女巫 来自time
  • n to 0 - 表示当时是否使用了ID
  • Bi - 代表计算的内容

所以现在我想要使用已经使用过的唯一ID作为计数。 如何将数据分组以存储使用过的ID,以获得想要的结果?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以结合使用扩展和应用。

df['id'].expanding().apply(lambda x: len(np.unique(x)))

这将返回一个包含所需结果的系列。

答案 1 :(得分:0)

您可以通过迭代DataFrame并将id添加到set

来执行此操作
df['wanted_result'] = 0
used_set = set()
for row in df.itertuples():
    df.loc[row.Index, 'wanted_result'] = len(used_set)
    used_set.add((row.id,))

结果

  id  time   Bi   wanted_result
0  1  3      NAN  0
1  1  3      1    1
2  1  2      NAN  1
3  2  2      1    1
4  2  1      1    2
5  2  1      1    2