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

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函数,但是它非常慢,无法按预期工作。我还没有找到一个示例,该示例在每次出现相同值时都基于列值对行进行分组。

最佳答案

如果eq列等于categoryparent,则您可以使用cumsum进行匹配,因为cumsum从1开始,所以sub要减去1:

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

关于python - 根据每次出现的另一列特定值在 Pandas 中添加索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59789887/

10-12 05:34