首页 > 解决方案 > Timedelta 索引的 IF 其他条件

问题描述

我有以下多索引数据

               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')

非常感谢任何帮助或建议。谢谢你。

标签: pythonpython-3.xpandas

解决方案


我认为需要:

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

说明

  1. 必要时检查差异的第一个过滤范围
  2. Convert to_series,因为diff尚未实现TimedeltaIndex
  3. NaN首先删除iloc
  4. 比较 5 分钟并检查是否sall True

推荐阅读