首页 > 解决方案 > 用十进制小时数插入 pandas 数据框列

问题描述

我在数据框中有一列,小时数以十进制表示(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......有什么想法可以解决这个问题吗?

标签: pythonpandasinterpolation

解决方案


使用这种时间格式,工作可能会很痛苦。我想到的是,您可以生成另一个相隔 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")

推荐阅读