Home > database >  Splitting the total time (in seconds) and fill the rows of a column value in 1 second frame
Splitting the total time (in seconds) and fill the rows of a column value in 1 second frame

Time:12-11

I have an dataframe look like (start_time and stop_time are in seconds followed by milliseconds)

enter image description here

And my Expected output to be like.,

enter image description here

I dont know how to approach this. forward filling may fill NaN values. But I need the total time seconds to be divided and saved as 1 second frame in accordance with respective labels. I dont have any code snippet to go forward. All i did is saving it in a dataframe as.,

df = pd.DataFrame(data, columns=['Labels', 'start_time', 'stop_time'])

Thank you and I really appreciate the help.

CodePudding user response:

>>> df2 = pd.DataFrame({
>>>     "Labels" : df.apply(lambda x:[x.Labels]*(round(x.stop_time)-round(x.start_time)), axis=1).explode(), 
...     "start_time" : df.apply(lambda x:range(round(x.start_time), round(x.stop_time)), axis=1).explode()
...     })
>>> df2['stop_time'] = df2.start_time   1
>>> df2

  Labels start_time stop_time
0      A          0         1
0      A          1         2
0      A          2         3
0      A          3         4
0      A          4         5
0      A          5         6
0      A          6         7
0      A          7         8
0      A          8         9
1      B          9        10
1      B         10        11
1      B         11        12
1      B         12        13
2      C         13        14
2      C         14        15
  • Related