2015-10-01 1 views
0

У меня есть кадр данных и один столбец - время (хранится как Timestamps), которые усекаются до секунд. События действительно происходили случайным образом, но всегда в разное время. Я бы хотел настроить время следующим образом. Если заданный Timestamp появляется один раз, добавьте к нему полсекунды (например, 15:16:04 станет 15: 16: 04.5). Если он появляется дважды и четверть секунды до первой и трех четвертей второй (например, 15:16:04 становится 15: 16: 04.25 и 15: 16: 04.75). И так далее (например, если 15:16:04 произошло три раза, вы закончите 15:16:04 + 1/6, 15: 16: 04.5 и 15:16:04 + 5/6). Каков идиоматический способ панд для этого?Сглаживание «второго» времени разрешения в pandas

ответ

0

Я бы не назвал это идиоматическим, но вы могли бы сделать что-то подобное. Также не то, что сглаживание будет отличаться от вашего.

import pandas as pd 
from datetime import timedelta 

def procTime(df): 
    n = df.Timestamp.shape[0] 
    df.Timestamp += [timedelta(0, i/(n + 1.0)) for i in range(1, n + 1)] 
    return df 

df = df.groupby('Timestamp').apply(procDF) 
+0

Это работает (за исключением формулы, которую я хотел, это '(2 * i + 1)/(2 * n) для i в диапазоне (n)'), но очень медленно. Встроенные функции панд обычно намного быстрее, поэтому я надеюсь, что есть другой способ. –

Смежные вопросы