我有一个像这样的数据框:
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
列等于category
和parent
,则您可以使用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/