Генерация последовательности временных рядов из кадра данных без уникального индекса - PullRequest
0 голосов
/ 19 мая 2019

У меня есть датафрейм из csv, который имеет следующие столбцы: user_id, путь, метка времени, пол

| user_id   | path  | timestamp             | gender    |
|:-------:  |------ |---------------------  |--------   |
| 0         | 1     | 2017-01-01 01:08:56   | f         |
| 0         | 2     | 2017-01-01 01:07:56   | f         |
| 0         | 3     | 2017-01-01 01:08:40   | f         |
| 0         | 4     | 2017-01-01 01:04:36   | f         |
| 0         | 5     | 2017-01-01 01:09:53   | f         |
| 0         | 6     | 2017-01-01 01:12:33   | f         |
| 0         | 7     | 2017-01-01 01:14:12   | f         |
| 0         | 8     | 2017-01-01 01:16:25   | f         |
| 0         | 9     | 2017-01-01 01:16:56   | f         |
| 1         | 1     | 2017-01-01 01:08:56   | m         |
| 1         | 2     | 2017-01-01 01:08:06   | m         |
| 1         | 3     | 2017-01-01 01:10:51   | m         |
| 1         | 4     | 2017-01-01 01:13:53   | m         |
| 2         | 1     | 2017-01-01 01:08:56   | f         |
| 3         | 2     | 2017-01-01 01:34:56   | m         |

Выходные данные должны выглядеть следующим образом:

| paths                 | timestamps                                                                                                                                                                                    | gender    |
|-------------------    |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  |--------   |
| 1,2,3,4,5,6,7,8,9     | 2017-01-01 01:08:56, 2017-01-01 01:07:56, 2017-01-01 01:08:40, 2017-01-01 01:04:36, 2017-01-01 01:09:53, 2017-01-01 01:12:33, 2017-01-01 01:14:12, 2017-01-01 01:16:25, 2017-01-01 01:16:56   | f         |

Проблема в том, что для одного и того же user_id имеется несколько строк из разных временных отметок, и мне нужна последовательность из этой последовательности для классификации временных рядов (прогнозирование пола на основе пути). Кроме того, временные метки не являются уникальными во всем фрейме данных, но они предназначены для каждого пользователя.

Сначала я попробовал с функцией группового панд со следующим кодом

dictionary = {}

for name, group in grouped:
   index = name[0]
   if dictionary.get(index, -1) == -1:
       dictionary[index] = {"sequence": group.path.values, "timestamps": group.timestamp.values, "gender": group.gender.values[0]}
   else:
       dictionary[index]["sequence"] = [dictionary[index]["sequence"], group.path.values]

это на самом деле не работает, так как я не могу получить значения (он остается мультииндексированным), и я не могу извлечь значения из каждой группы.

Кроме того, я попробовал это со следующим фрагментом кода:

dictionary = {}

for name, group in grouped:
    index = name[0]
    if dictionary.get(index, -1) == -1:
        dictionary[index] = {"sequence": group.path.values, "timestamps": group.timestamp.values, "gender": group.gender.values[0]}
    else:
        dictionary[index]["sequence"] = [dictionary[index]["sequence"], group.path.values]

Result after trying to generate a dictionary

Спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...