熊猫.resample或.asfreq填写缺少的日期时间条目

时间:2018-09-17 14:53:02

标签: python-3.x pandas datetime

我有一个看起来像这样的数据框:

import pandas as pd
d = {'TransactionId' : pd.Series([633025, 634560],index = ['2018-01-07 22:30:00', '2018-01-08 19:00:00']),
 'Value' : pd.Series([677.06, 677.44], index = ['2018-01-07 22:30:00', '2018-01-08 19:00:00'])}
df = pd.DataFrame(d)
df.head()

TransactionId 633025完成后,值将停止记录,直到下一个Transaction开始。我想在两次出现之间每隔15分钟添加一个datetime索引值,并且TransactionId为'NaN',并向前填充Value列。我曾尝试使用.resample和.asfreq,但没有任何运气;使用任一“ 15min”的时间不会相应地修改数据框。我该怎么办?

1 个答案:

答案 0 :(得分:1)

首先,将索引设置为datetime,然后可以先使用.resample,然后再使用.ffill

import pandas as pd

df.index = pd.to_datetime(df.index)
df = df.resample('15min').asfreq()
df['Value'] = df['Value'].ffill()

输出:

                     TransactionId   Value
2018-01-07 22:30:00       633025.0  677.06
2018-01-07 22:45:00            NaN  677.06
2018-01-07 23:00:00            NaN  677.06
2018-01-07 23:15:00            NaN  677.06
2018-01-07 23:30:00            NaN  677.06 
...
2018-01-08 18:00:00            NaN  677.06
2018-01-08 18:15:00            NaN  677.06
2018-01-08 18:30:00            NaN  677.06
2018-01-08 18:45:00            NaN  677.06
2018-01-08 19:00:00       634560.0  677.44