<p>主要思想是由<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.date_range.html" rel="nofollow noreferrer">^{<cd3>}</a>创建的<code>time</code>使用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reindex.html" rel="nofollow noreferrer">^{<cd1>}</a>:</p>
<pre><code>df['timel'] = pd.to_datetime(df['timel']).dt.time
start = pd.to_datetime(str(df['timel'].min()))
end = pd.to_datetime('09:45:00')
dates = pd.date_range(start=start, end=end, freq='1Min').time
#print (dates)
df = df.set_index('timel').reindex(dates).reset_index().reindex(columns=df.columns)
cols = df.columns.difference(['val'])
df[cols] = df[cols].ffill()
print (df.head())
ric datel timel val
0 xyz 2017-01-01 09:00:00 2.0
1 xyz 2017-01-01 09:01:00 NaN
2 xyz 2017-01-01 09:02:00 NaN
3 xyz 2017-01-01 09:03:00 NaN
4 xyz 2017-01-01 09:04:00 5.0
</code></pre>
<p>与<code>resample</code>类似的解决方案:</p>
<pre><code>df['timel'] = pd.to_datetime(df['timel'])
#if missing row with 09:45:00 add it
if not (df['timel'] == pd.to_datetime('09:45:00')).any():
df.loc[len(df.index), 'timel'] = pd.to_datetime('09:45:00')
df=df.set_index('timel').resample("1min").first().reset_index().reindex(columns=df.columns)
cols = df.columns.difference(['val'])
df[cols] = df[cols].ffill()
df['timel'] = df['timel'].dt.time
print (df.head())
ric datel timel val
0 xyz 2017-01-01 09:00:00 2.0
1 xyz 2017-01-01 09:01:00 NaN
2 xyz 2017-01-01 09:02:00 NaN
3 xyz 2017-01-01 09:03:00 NaN
4 xyz 2017-01-01 09:04:00 5.0
</code></pre>