У меня есть последовательность сообщений электронной почты, упорядоченная по методу timestamp и user_id.Python - подсчет последовательных частот по группе
Я хочу исследовать, как часто по электронной почте я следил по электронной почте j. Я собираюсь отображать эти частоты среди пользователей на карте тепла, чтобы показать самый общий путь.
a = """timestamp,email,subject
2016-07-01 10:17:00,[email protected],subject2
2016-07-01 02:01:02,[email protected],welcome
2016-07-01 14:45:04,[email protected],subject3
2016-07-01 08:14:02,[email protected],subject1
2016-07-01 16:26:35,[email protected],subject4
2016-07-01 10:17:00,[email protected],subject1
2016-07-01 02:01:02,[email protected],welcome
2016-07-01 14:45:04,[email protected],subject3
2016-07-01 08:14:02,[email protected],subject2
2016-07-01 16:26:35,[email protected],subject4
2016-07-01 18:00:00,[email protected],welcome
2016-07-01 19:00:02,[email protected],subject1
2016-07-01 20:00:04,[email protected],subject3
2016-07-01 21:14:02,[email protected],subject4
2016-07-01 21:26:35,[email protected],subject2
"""
import pandas as pd
from pandas.io.parsers import StringIO
df1 = pd.read_csv(StringIO(a), parse_dates=['timestamp'])
df1=df1.sort_values(['email','timestamp'])
отсортированный df1:
timestamp email subject
1 2016-07-01 02:01:02 [email protected] welcome
3 2016-07-01 08:14:02 [email protected] subject1
0 2016-07-01 10:17:00 [email protected] subject2
2 2016-07-01 14:45:04 [email protected] subject3
4 2016-07-01 16:26:35 [email protected] subject4
6 2016-07-01 02:01:02 [email protected] welcome
8 2016-07-01 08:14:02 [email protected] subject2
5 2016-07-01 10:17:00 [email protected] subject1
7 2016-07-01 14:45:04 [email protected] subject3
9 2016-07-01 16:26:35 [email protected] subject4
10 2016-07-01 18:00:00 [email protected] welcome
11 2016-07-01 19:00:02 [email protected] subject1
12 2016-07-01 20:00:04 [email protected] subject3
13 2016-07-01 21:14:02 [email protected] subject4
14 2016-07-01 21:26:35 [email protected] subject2
Вывод должен выглядеть следующим образом
welcome subject1 subject2 subject3 subject4
welcome 0
subject1 2 0
subject2 1 1 0
subject3 0 2 1 0
subject4 0 0 0 3 0
Другими словами, было 2 вхождений, где subject1 последовало после приветственного письма. Было 1 случай, когда предмет 2 следовал после приветственного сообщения и т. Д.
Каков наилучший способ сделать это?
Вы можете объяснить свой результат? он выглядит как subject4, и приветствие должно иметь 1 не 0 – depperm
Отредактировано стол. Надеюсь, теперь это ясно. – TinaW