根据其他列查找和计算重复项

时间:2017-08-25 09:21:56

标签: python pandas dataframe duplicates

我在Pandas中有下表:

Date    System  Action
20.08.2017  A   9:01:01
20.08.2017  B   9:05:11
20.08.2017  B   9:05:11
20.08.2017  B   9:10:00
20.08.2017  B   9:05:11
21.08.2017  A   8:03:05
21.08.2017  A   8:03:05
22.09.2017  A   8:05:00
22.09.2017  B   9:05:11
22.09.2017  B   9:05:11
22.09.2017  B   9:05:11

我想在“行动时间”中找到重复项,但仅限于相同的系统和日期。然后将它们标记为Seq列。因此结果应如下所示:

Date    System  Action  Seq
20.08.2017  A   9:01:01 1
20.08.2017  B   9:05:11 1
20.08.2017  B   9:05:11 2
20.08.2017  B   9:10:00 1
20.08.2017  B   9:05:11 3
21.08.2017  A   8:03:05 1
21.08.2017  A   8:03:05 2
22.09.2017  A   8:05:00 1
22.09.2017  B   9:05:11 1
22.09.2017  B   9:05:11 2
22.09.2017  B   9:05:11 3

新一天系统“A”的第一次出现时间为“1”。同一天和同一系统的所有后续条目都有+1。所有日子和所有系统都是独立的。

你能用一些pythonic的方式暗示我怎么做?我能想到的只是所有数据的循环。但数据集非常大......

1 个答案:

答案 0 :(得分:4)

这似乎是df.groupby的作业,后跟dfGroupBy.cumcount

In [1018]: df.assign(Seq=df.groupby(['Date', 'System', 'Action']).cumcount() + 1)
Out[1018]: 
          Date System   Action  Seq
0   20.08.2017      A  9:01:01    1
1   20.08.2017      B  9:05:11    1
2   20.08.2017      B  9:05:11    2
3   20.08.2017      B  9:10:00    1
4   20.08.2017      B  9:05:11    3
5   21.08.2017      A  8:03:05    1
6   21.08.2017      A  8:03:05    2
7   22.09.2017      A  8:05:00    1
8   22.09.2017      B  9:05:11    1
9   22.09.2017      B  9:05:11    2
10  22.09.2017      B  9:05:11    3