我有以下Dataframe:
df
Out[23]:
PplNum RoomNum Value
0 1 0 265
1 1 12 170
2 2 0 297
3 2 12 85
4 2 0 41
5 2 12 144
通常,PplNum和RoomNum是这样生成的,它将始终遵循以下格式:
for ppl in [1,2,2]:
for room in [0, 12]:
print(ppl, room)
1 0
1 12
2 0
2 12
2 0
2 12
但现在我想要实现的是标记PplNum和RoomNum的重复组合,以便我可以知道哪个组合是第一次出现,哪个是第二次出现等等……所以预期的输出Dataframe将是这样的:
PplNum RoomNum Value C
0 1 0 265 1
1 1 12 170 1
2 2 0 297 1
3 2 12 85 1
4 2 0 41 2
5 2 12 144 2
解决方法:
你可以使用groupby()和cumcount()功能一起完成:
In [102]: df['C'] = df.groupby(['PplNum','RoomNum']).cumcount() + 1
In [103]: df
Out[103]:
PplNum RoomNum Value C
0 1 0 265 1
1 1 12 170 1
2 2 0 297 1
3 2 12 85 1
4 2 0 41 2
5 2 12 144 2
说明:
In [101]: df.groupby(['PplNum','RoomNum']).cumcount() + 1
Out[101]:
0 1
1 1
2 1
3 1
4 2
5 2
dtype: int64
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。