Python 每小时插入15分钟的日期时间

Python 每小时插入15分钟的日期时间,python,pandas,datetime,Python,Pandas,Datetime,我有一个数据框,有3列,其中第一列是datetime 看起来像这样 Datetime Level1 Level2 2016-02-24 01:00 12 15 2016-02-24 02:00 14 13 2016-02-24 03:00 8 12 现在我想在每小时值之间添加15分钟间隔值。但是,Level1和Level2的值与前一个小时的值相同。应该是这样的: Datetime Level

我有一个数据框,有3列,其中第一列是datetime

看起来像这样

Datetime            Level1   Level2
2016-02-24 01:00    12       15
2016-02-24 02:00    14       13
2016-02-24 03:00    8        12
现在我想在每小时值之间添加15分钟间隔值。但是,Level1和Level2的值与前一个小时的值相同。应该是这样的:

Datetime            Level1   Level2
2016-02-24 01:00    12       15
2016-02-24 01:15    12       15
2016-02-24 01:30    12       15
2016-02-24 01:45    12       15
2016-02-24 02:00    14       13
2016-02-24 02:15    14       13
2016-02-24 02:30    14       13
2016-02-24 02:45    14       13
2016-02-24 03:00    8        12
2016-02-24 03:15    8        12
2016-02-24 03:30    8        12
2016-02-24 03:45    8        12

我想不出一个合适的方法来做这件事

您可以创建原始数据帧的副本,其中将
Datetime
列每列增加15分钟,然后使用后跟获得最终结果:

from datetime import timedelta
import pandas as pd

df = pd.DataFrame(
    data=[['2016-02-24 01:00', 12, 15],
          ['2016-02-24 02:00', 14, 13],
          ['2016-02-24 03:00',  8, 12]],
    columns=['Datetime', 'Level1', 'Level2']
)
df['Datetime'] = pd.to_datetime(df['Datetime'])

intervals = [df]
while len(intervals) < 4:
    new = intervals[-1].copy()
    new['Datetime'] += timedelta(minutes=15)
    intervals.append(new)

result = pd.concat(intervals).sort_values(by='Datetime')
从日期时间导入时间增量
作为pd进口熊猫
df=pd.DataFrame(
数据=['2016-02-24 01:00',12,15],
['2016-02-24 02:00', 14, 13],
['2016-02-24 03:00',  8, 12]],
列=['Datetime','Level1','Level2']
)
df['Datetime']=pd.to_Datetime(df['Datetime'])
间隔=[df]
而len(间隔)<4:
新建=间隔[-1]。复制()
新['Datetime']+=timedelta(分钟=15)
间隔。追加(新)
结果=pd.concat(interval).sort_值(按class='Datetime')
将datetime设置为索引(转换为datetime后),并使用asfreq方法和正向填充,用以前的值填充空值:

#thanks to @a_guest for the cleaned sample data

df = pd.DataFrame(
    data=[['2016-02-24 01:00', 12, 15],
          ['2016-02-24 02:00', 14, 13],
          ['2016-02-24 03:00',  8, 12]],
    columns=['Datetime', 'Level1', 'Level2']
)
df['Datetime'] = pd.to_datetime(df['Datetime'])

df = df.set_index('Datetime')

df.asfreq('15min',method='pad')

                 Level1 Level2
Datetime        
2016-02-24 01:00:00 12  15
2016-02-24 01:15:00 12  15
2016-02-24 01:30:00 12  15
2016-02-24 01:45:00 12  15
2016-02-24 02:00:00 14  13
2016-02-24 02:15:00 14  13
2016-02-24 02:30:00 14  13
2016-02-24 02:45:00 14  13
2016-02-24 03:00:00 8   12
NB:你的问题是时间间隔为15分钟,你的最新时间是下午3点,而不是下午4点,这在你的数据中是共享的