Интерполировать столбец данных pandas с десятичными часами - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть столбец в кадре данных с десятичными часами (0.0, 0.15, 0.30, 0.45, 1.0, 1.15, ...., 23.45), и я хочу интерполировать каждую минуту вместо каждых 15 минут.

Я пытался df.interpolate(), но результат должен быть 0.59, 1.0, а не 0.59, 0.60 ... Любые идеи, как я могу решить эту проблему?

1 Ответ

0 голосов
/ 30 апреля 2019

С этим форматом времени работать может быть довольно больно.Что мне приходит в голову, так это то, что вы можете сгенерировать еще один кадр данных с интервалом в 1 минуту, а затем слить его слева с исходным кадром данных.

import pandas as pd
import numpy as np

def gen_time(interval=15):
    m = 0
    h = 0
    tm = []
    while h*60 + m <= 23*60 + 45:
        tm.append(h+m*1e-2)
        m += interval
        if m == 60:
            h += 1
            m = 0
    return tm

tm = gen_time()
df = pd.DataFrame({"time":tm,
                  "values":np.random.randn(len(tm))})

ddf = pd.DataFrame({"time":gen_time(interval=1)})

df = pd.merge(ddf, df,on="time", how="left")
...