使用附加列识别重复行

4 python dataframe pandas running-count

我有以下数据框:

   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
Run Code Online (Sandbox Code Playgroud)

一般来说,PplNumandRoomNum是这样生成的,并且它总是遵循以下格式:

for ppl in [1,2,2]:
    for room in [0, 12]:
        print(ppl, room)
Run Code Online (Sandbox Code Playgroud)
1 0
1 12
2 0
2 12
2 0
2 12
Run Code Online (Sandbox Code Playgroud)

但现在我想要实现的是标记 和 的那些重复组合,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
Run Code Online (Sandbox Code Playgroud)

Max*_*axU 5

您可以使用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
Run Code Online (Sandbox Code Playgroud)

解释:

In [101]: df.groupby(['PplNum','RoomNum']).cumcount() + 1
Out[101]:
0    1
1    1
2    1
3    1
4    2
5    2
dtype: int64
Run Code Online (Sandbox Code Playgroud)

分组依据示例

  • @JJMarko,我添加了相应文档和“groupby”使用示例的链接 - 我认为这是最好的解释 (2认同)