The use of PyDataSets makes it easier.
sampleHeaders = ['t_stamp','running','starting','stop','stopping']
sampleData = [['12:00:00 AM', 2026686.859, 0, 604281.2019,0],
['12:04:48 AM', 2027128.760, 0, 604414.1515,0],
['12:09:36 AM', 2027569.067, 0, 604545.232, 0],
['12:14:24 AM', 2028008.825, 0, 604675.712, 0],
['12:19:12 AM', 2028451.945, 0, 604806.4073, 0],
['12:24:00 AM', 2028898.808, 0, 604938.972, 0],
['12:28:48 AM', 2029341.828, 0, 605073.8736, 0],
['12:33:36 AM', 2029784.787, 0, 605209.7999, 0],
['12:38:24 AM', 2030227.914, 0, 605342.7043, 0],
]
sampleDataset = system.dataset.toDataSet(sampleHeaders, sampleData)
############################################################################
# PyDataSets lets us easily slice and iterate in a pythonic way.
dataIn = system.dataset.toPyDataSet(sampleDataset)
# Initialize values for creating the output dataset
colNames = list(dataIn.getColumnNames())
data = []
# zip() lets us iterate over multiple objects at the same time.
# We just happen to use the same PyDataSet starting at the next row.
for prevRow, row in zip(dataIn, dataIn[1:]):
newRow = [row['t_stamp']]
# iterate over the remaining columns to get differences.
for col in colNames[1:]:
newRow.append(row[col] - prevRow[col])
data.append(newRow)
dataOut = system.dataset.toDataSet(colNames, data)
dataIn and dataOut:
row | t_stamp | running | starting | stop | stopping
-------------------------------------------------------------------
0 | 12:00:00 AM | 2026686.859 | 0 | 604281.2019 | 0
1 | 12:04:48 AM | 2027128.76 | 0 | 604414.1515 | 0
2 | 12:09:36 AM | 2027569.067 | 0 | 604545.232 | 0
3 | 12:14:24 AM | 2028008.825 | 0 | 604675.712 | 0
4 | 12:19:12 AM | 2028451.945 | 0 | 604806.4073 | 0
5 | 12:24:00 AM | 2028898.808 | 0 | 604938.972 | 0
6 | 12:28:48 AM | 2029341.828 | 0 | 605073.8736 | 0
7 | 12:33:36 AM | 2029784.787 | 0 | 605209.7999 | 0
8 | 12:38:24 AM | 2030227.914 | 0 | 605342.7043 | 0
row | t_stamp | running | starting | stop | stopping
------------------------------------------------------------
0 | 12:04:48 AM | 441.901 | 0 | 132.9496 | 0
1 | 12:09:36 AM | 440.307 | 0 | 131.0805 | 0
2 | 12:14:24 AM | 439.758 | 0 | 130.48 | 0
3 | 12:19:12 AM | 443.12 | 0 | 130.6953 | 0
4 | 12:24:00 AM | 446.863 | 0 | 132.5647 | 0
5 | 12:28:48 AM | 443.02 | 0 | 134.9016 | 0
6 | 12:33:36 AM | 442.959 | 0 | 135.9263 | 0
7 | 12:38:24 AM | 443.127 | 0 | 132.9044 | 0