我有这样的df
animal age comment
1 cat 1 xyz
2 cat 2 xyz
3 cat 3 xyz
4 cat 4 xyz
5 cat 5 xyz
6 dog 1 xyz
7 dog 2 xyz
8 dog 3 xyz
9 dog 4 xyz
10 dog 5 xyz它已经按动物和年龄分类了。我的任务是用特定的文本替换每个动物中前两行的注释,然后用另一文本替换下两行。其余的行应该被删除。
期望产出:
animal age comment
1 cat 1 young
2 cat 2 young
3 cat 3 old
4 cat 4 old
5 dog 1 young
6 dog 2 young
7 dog 3 old
8 dog 4 old我可以做到这一点,但在5-7步。我想知道是否有更有效的方法来做到这一点。
发布于 2022-07-14 11:45:34
这里的诀窍是使用cumcount为每个animal组创建一个顺序计数器,然后使用np.where根据seq计数器的值更新comment中的值。
i = df.groupby('animal').cumcount()
df['comment'] = np.where(i < 2, 'young', 'old')
df[i < 4] animal age comment
1 cat 1 young
2 cat 2 young
3 cat 3 old
4 cat 4 old
6 dog 1 young
7 dog 2 young
8 dog 3 old
9 dog 4 oldhttps://stackoverflow.com/questions/72979240
复制相似问题