在两个日期时间索引之间添加索引

时间:2019-05-04 23:31:58

标签: python pandas dataframe datetime time

数据框:我有一个日期时间索引,但它每天都缺少17:00。我每天如何添加额外的yyyy-mm-dd 17:00行?

说我是否有

                price
2017-01-01 16:55  1.2
2017-01-01 17:05  2.3
2017-01-01 17:10  3.4
.
.
.
2019-01-01 16:55  23
2019-01-01 17:05  29
2019-01-01 17:10  20

我想在17:00用NaNs添加行,以便拥有

2017-01-01 16:55  1.2
2017-01-01 17:00  NaN
2017-01-01 17:05  2.3
2017-01-01 17:10  3.4

2 个答案:

答案 0 :(得分:1)

使用reindex

from io import StringIO
# sample data
s = """date_time,price
2017-01-01 16:55,1.2
2017-01-01 17:05,2.3
2017-01-01 17:10,3.4"""

df = pd.read_csv(StringIO(s))
df['date_time'] = pd.to_datetime(df['date_time'])
df = df.set_index('date_time')

# create a date range with the index min and max and set to whatever freq you would like
new_idx = pd.date_range(df.index.min(), df.index.max(), freq='5T')
df.reindex(new_idx)

                    price
2017-01-01 16:55:00   1.2
2017-01-01 17:00:00   NaN
2017-01-01 17:05:00   2.3
2017-01-01 17:10:00   3.4

答案 1 :(得分:0)

由于您有不同的date,这里将需要groupby,而我正在使用resample

df.groupby(df.index.date).apply(lambda x : x.resample('5 min').mean()).reset_index(level=0,drop=True)
Out[13]: 
                     price
date_time                 
2017-01-01 16:55:00    1.2
2017-01-01 17:00:00    NaN
2017-01-01 17:05:00    2.3
2017-01-01 17:10:00    3.4