Вот способ сделать это в вашем случае. Сначала мы сделаем это для одного человека, чтобы проиллюстрировать метод.
gb = df.groupby('person')
group5 = gb.get_group('005')
sorted_by_date = group5.sort_values('activitydate').reset_index(drop=True)
sorted_by_date['date_diff'] = sorted_by_date.activitydate.diff()
run_groups = sorted_by_date.groupby(
(sorted_by_date.date_diff >= pd.Timedelta('50 seconds')).cumsum()
)
run_groups.get_group(run_groups.id.count().idxmax())
, что дает
id person activitydate date_diff run_count
99 99 005 2018-09-20 05:40:10 00:01:30 0
68 68 005 2018-09-20 05:40:18 00:00:08 1
92 92 005 2018-09-20 05:40:25 00:00:07 2
82 82 005 2018-09-20 05:40:26 00:00:01 3
48 48 005 2018-09-20 05:41:11 00:00:45 4
хитрую часть sorted_by_date.groupby((sorted_by_date.date_diff >= pd.Timedelta('50 seconds')).cumsum())
, которая является «моделью сравнения-совокупности-группировки», которую я нашел в , этот отличный ответ . Словом, это создает логический столбец, где False
означает, что разница между действиями короткая, затем получает кумулятивную сумму этого столбца таким образом, что при серии коротких различий сумма не меняется, а затем группируется по этой сумме. , Тогда мы просто находим группу с наибольшим количеством.
Теперь, чтобы применить это ко всем людям одновременно:
def get_longest_short_activity_run_length(group):
sorted_by_date = group.sort_values('activitydate')
sorted_by_date['date_diff'] = sorted_by_date.activitydate.diff()
run_groups = sorted_by_date.groupby(
(sorted_by_date.date_diff >= pd.Timedelta('50 seconds')).cumsum()
)
return run_groups.get_group(run_groups.id.count().idxmax())
gb.apply(get_longest_short_activity_run_length)
, который возвращает
id person activitydate date_diff
person
005 99 99 005 2018-09-20 05:40:10 00:01:30
68 68 005 2018-09-20 05:40:18 00:00:08
92 92 005 2018-09-20 05:40:25 00:00:07
82 82 005 2018-09-20 05:40:26 00:00:01
48 48 005 2018-09-20 05:41:11 00:00:45
088 36 36 088 2018-09-20 05:00:25 NaT
59 59 088 2018-09-20 05:01:12 00:00:47
24 24 088 2018-09-20 05:01:18 00:00:06
93 93 088 2018-09-20 05:01:20 00:00:02
98 98 088 2018-09-20 05:01:40 00:00:20
76 76 088 2018-09-20 05:02:00 00:00:20
95 95 088 2018-09-20 05:02:48 00:00:48
0 0 088 2018-09-20 05:03:17 00:00:29
17 17 088 2018-09-20 05:04:00 00:00:43
Открытый ~/.bashrc.
Этот файл загружается каждый раз, когда Вы запускаете новую оболочку (при использовании Bash который большинство людей). При использовании другой оболочки файл может иметь другое имя, как ~/.shrc
.
Добавьте строку, в которой Вы нуждаетесь к нижней части файла:
export PATH=$PATH:$EC2_HOME/bi
Другая информация свернулась откуда-либо в потоке:
Существует несколько мест для помещения этого, в зависимости от оболочки и потребностей. Все эти файлы находятся в Вашем корневом каталоге:
Для Bash:
.bashrc (executed when you shart a shell)
ИЛИ
.bash_profile (executed when you log in)
Для csh и tcsh:
.cshrc
Для sh и ksh:
.profile
Добавьте его к своему .cshrc файлу (для csh и tcsh), .profile файл (для sh и ksh), или .bash_profile файл (для удара)
Необходимо найти файл профиля и поместить ту строку там. Предположим, что Вы используете удар, файлы профиля являются .bashrc и .bash_profile, найденным в ~. Эти файлы будут варьироваться, в зависимости от которой оболочки Вы используете.
Необходимо поместить те команды в один из файлов "автоматического запуска" оболочки.
Для удара это было бы .bashrc
в Вашем homedirectory (создают его при необходимости),
добавьте его к своему .bashrc или другому файлу запуска .bash.