【问题标题】:Interpolate pandas dataframe column with hours in decimal用十进制小时数插入 pandas 数据框列
【发布时间】:2019-04-30 12:09:50
【问题描述】:

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

【问题讨论】:

标签: python pandas interpolation


【解决方案1】:

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

【讨论】:

  • 感谢您的建议!我尝试了这种方法,它对我有用。我无法结束这个问题,因为我没有足够的声誉
猜你喜欢
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
相关资源
最近更新 更多