解
group_hours = (df.hour <= df.hour.shift()).cumsum()def insert_missing_hours(df): return df.set_index('hour').reindex([0, 6, 12, 18]).reset_index()df.groupby(group_hours).apply(insert_missing_hours).reset_index(drop=1)
好像:
hour value0 0 1.01 6 2.02 12 3.03 18 4.04 0 5.05 6 6.06 12 7.07 18 8.08 0 NaN9 6 9.010 12 10.011 18 11.012 0 NaN13 6 NaN14 12 12.015 18 13.016 0 14.017 6 NaN18 12 NaN19 18 NaN
说明
为了应用,reindex我需要确定要分组的行。我检查行的小时数是否小于或等于前一行的小时数。如果是这样,则标记一个新组。
insert_missing_hours恰恰是reindex的子组
[0, 6, 12, 18]。