Как использовать условия в Pandas Groupby - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть следующее путешествие Данные , и мне нужно сгенерировать uniqueid, используя следующее условие.

Псевдокод: для комбинации dir, id1, id2
вычислить разницу во времени междустроки

Установить счетчик = 1

Если разница во времени> 30 минут, то счетчик + еще 1 счетчик.

Ниже приведен фрагмент кода, который я написал

    #Input dataframe
data = pd.DataFrame({        
        "dir":["A_dir","A_dir","A_dir","A_dir","C_dir","C_dir","C_dir","H_dir","H_dir","H_dir","A_dir","A_dir","A_dir","A_dir"],
        "Timestamp":["13-12-2018 08:00:00","13-12-2018 08:03:00","13-12-2018 08:06:00","13-12-2018 08:09:00","13-12-2018 11:58:00","13-12-2018 12:00:00","13-12-2018 12:02:00","13-12-2018 12:05:00","13-12-2018 12:07:05","13-12-2018 12:10:00","13-12-2018 13:00:00","13-12-2018 13:10:00","13-12-2018 13:20:00","13-12-2018 13:32:00"],
        "time diff":["","00:03:00","00:03:00","00:03:00","03:49:00","00:02:00","00:02:00","00:03:00","00:02:05","00:02:55","00:50:00","00:10:00","00:10:00","00:12:00"],
        "des":["G","F","C","A","A","E","C","B","G","H","G","F","C","A"],
        "origin":["H","G","F","C","D","B","E","A","B","G","H","G","F","C"],"Journey":[1,1,1,1,2,2,2,3,3,3,4,4,4,4],
        "id2":[100,100,100,100,2,2,2,100,100,100,100,100,100,100],"id1":[1,1,1,1,2,2,2,1,1,1,1,1,1,1]
        })

#Identify time diff
for i, row in data.iterrows():
    data['time diff']=data['Timestamp'] - data['Timestamp'].shift(1)

#Unique id
data.index = pd.to_datetime(data["Timestamp"])
data['uniqueid'] = data.groupby([data['id1'],data['id2'],data['dir'],pd.TimeGrouper('30Min')]).ngroup()

Это выход .TimeGrouper группирует период времени в 30-минутные сегменты, и когда метка времени последовательных строк составляет менее 30 минут, но в разных сегментах, он вычисляет uniqueid как 2 отдельных, когда оно должно быть одинаковым.Например: уникальный идентификатор 2 должен быть равен 1.

Пожалуйста, совет, как создать уникальный идентификатор.Я открыт для других способов генерировать это тоже.Заранее спасибо.

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