根据每次出现的另一列特定值在熊猫中添加索引

时间:2020-01-17 15:02:36

标签: python pandas pandas-groupby pandasql

我有一个像这样的数据框:

category name   age 
parent  harry   29
child   smith   12
parent  sally   41
child   david   19
child   mike    16

我想根据类别列值“ parent”的每次出现(组中的数据框)将列添加到组族中。如:

category name   age  family_id
parent  harry   29     0
child   smith   12     0
parent  sally   41     1
child   david   19     1
child   mike    16     1

我试图将family_id设为递增整数。

我已经尝试了一堆group_by,并且目前正在尝试编写自己的apply函数,但是它非常慢并且无法按预期工作。我还没有找到一个示例,该示例基于每次出现 相同 value 的列值对行进行分组。

1 个答案:

答案 0 :(得分:1)

如果category列等于parent并且eqcumsum要减去1,则可以使用sub进行匹配,因为此处的总和从1开始:< / p>

df['family_id'] = df['category'].eq('parent').cumsum().sub(1)
print(df)

  category   name  age  family_id
0   parent  harry   29          0
1    child  smith   12          0
2   parent  sally   41          1
3    child  david   19          1
4    child   mike   16          1