我在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的方式暗示我怎么做?我能想到的只是所有数据的循环。但数据集非常大......
答案 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