Используйте числовые массивы, чтобы ускорить итерацию в пандах. - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть датафрейм в следующей структуре.

Current dataframe

Я видел этот пост здесь, в котором второй ответ говорит, что использование массива numpy для зацикливания огромного фрейма данных является лучшим,

Это мое требование:

  1. Цикл по уникальным датам
  2. Внутри уникальных дат в кадре данных, цикл по уникальному сеансу.
  3. Как только я нахожусь в уникальном сеансе с уникальными датами, мне нужно выполнить некоторые операции

В настоящее время я использую цикл for, но он невыносимо медленный.Кто-нибудь может подсказать, как использовать массивы numpy для удовлетворения моих требований?как предложено в этом посте здесь?

РЕДАКТИРОВАТЬ:

Я разрабатываю мое требование здесь:
1. Цикл по уникальным датам
Что даст мне следующий кадр данных:
unique days 2. В пределах уникальных дат выполните цикл по уникальным идентификаторам sessionId.
Что даст мне что-то вроде этого:
unique Sessions 3. Один разв уникальном sessionId в пределах уникальной даты
Найдите разницу во времени между последним элементом и первым элементом
Эта разница во времени добавляется в список для каждого уникального сеанса.
4. Вне 2-го цикла я возьмусреднее значение списка, созданного на предыдущем шаге.
5. Значение, полученное на шаге 4, добавляется в другой список

Цель состоит в том, чтобы найти среднюю разницу во временимежду последним и первым сообщением каждого сеанса в день

1 Ответ

0 голосов
/ 24 сентября 2018

Использовать в групповом режиме:

grouped = df.groupby(['ChatDate", "sessionId"])
timediff = grouped.timestamp.last() - grouped.timestamp.first() # or max-min
timediff.mean() # this is your step 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...