1

Need to add new rows to existing data-frame if there is no data in dataframe.In my dataframe,If mcahine on it gives data with time and status(On/off) for every 30 seconds. But machine off,there is no data in dataframe. df:

 Time                      Engine On/Off
2021-03-08 00:00:24+05:30   1
2021-03-08 00:00:54+05:30   1
2021-03-08 00:01:24+05:30   1
2021-03-08 00:01:54+05:30   1

ex: first row 00:00:24 and then after 30 secods,secods data point 00:00:54.

Here i need to append rows if next time point data not available(current state + 30 seconds). With time and Engine On/Off state as 0.

1 Answers1

1

Use Series.reindex with date_range generated by minimal and maximal datetimes:

print (df)
                        Time  Engine On/Off
0  2021-03-08 00:00:24+05:30              1
1  2021-03-08 00:01:24+05:30              1
2  2021-03-08 00:01:54+05:30              1

df['Time'] = pd.to_datetime(df['Time'])

r = pd.date_range(df['Time'].min(), df['Time'].max(), freq='30S')
df = df.set_index('Time')['Engine On/Off'].reindex(r, fill_value=0).reset_index()
print (df)
                      index  Engine On/Off
0 2021-03-08 00:00:24+05:30              1
1 2021-03-08 00:00:54+05:30              0
2 2021-03-08 00:01:24+05:30              1
3 2021-03-08 00:01:54+05:30              1
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252