如果Timedelta索引的其他条件

时间:2018-07-19 08:01:36

标签: python python-3.x pandas

我有以下多索引数据

               2002074266              2002074444
TimeStamp   Total       Freq       Total       Freq
HH:MM        Pc          Hz         Pc          Hz
06:50        3           10         7           13
06:55        4           11         8           14
07:00        5           12         9           15
08:55        6           13         1           12
09:00        7           13         3           13

我正在尝试在该时间范围内执行IF ELSE条件。时间间隔是每行5分钟。如果07:00到09:10之间的时间范围缺少任何5分钟数据(如本例所示),则将运行ELSE语句。我不确定如何为我的IF ELSE声明时间范围。

这是我当前的代码:

df = pd.read_csv("Test.csv", header=[0,1], skiprows = 3, index_col=0)
df1 = df.loc[:,(slice(None), ['Total'])]
df2 = df1.iloc[1:,:] 
df2.index = pd.to_timedelta(df2.index + ':00')

if (df2.index == '07:00:00').any():
   print('Complete data')
else:
   print("Filling in progress")
   df2 = df2.resample('5min').ffill() 
   print('Missing data, forward filled')

df2.to_csv('Result.csv')

任何帮助或建议,我们将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

我认为需要:

if (df2.loc['07:00:00':'09:10:00'].index.to_series().diff().iloc[1:] == '00:05:00').all():
    print('Complete data')

说明

  1. 必要时检查差异的第一个过滤器范围
  2. 转换to_series,因为TimedeltaIndex尚未实现diff
  3. 先删除iloc前的NaN
  4. 比较5分钟,检查是否有all True s