如何使用 Pandas 从 TimeSeries 数据集计算过程持续时间
How to calculate a Process Duration from a TimeSeries Dataset with Pandas
我有一个庞大的数据集,其中包含按时间顺序(按时间戳)和传感器类型排序的各种传感器数据。我想通过从最后一个条目中减去传感器的第一个条目来计算以秒为单位的过程持续时间。这是用 python 和 pandas 完成的。附上一个例子,以便更好地理解:
enter image description here
我想从每种传感器类型的最后一行中减去第一行以获得以秒为单位的过程持续时间(即第 8 行减去第 1 行:2022-04-04T09:44:56.962Z - 2022-04- 04T09:44:56.507Z = 0.455 秒)。
然后应将持续时间写入传感器类型最后一行中新创建的列。
提前致谢!
假设您的 'timestamp' 列已经 'to_datetime' 转换,这行得通吗?
df['diffPerSensor_type']=df.groupby('sensor_type')['timestamp'].transform('last')-df.groupby('sensor_type')['timestamp'].transform('first')
然后你可以用这个提取你的秒数
df['diffPerSensor_type'].dt.seconds
如果有人想重现一个例子,这里有一个df:
import pandas as pd
df = pd.DataFrame({
'sensor_type' : [0]*7 + [1]*11 + [13]*5 + [8]*5,
'timestamp' : pd.date_range('2022-04-04', periods=28, freq='ms'),
'value' : [128] * 28
})
df['time_diff in milliseconds'] = (df.groupby('sensor_type')['timestamp']
.transform(lambda x: x.iloc[-1]-x.iloc[0])
.dt.components.milliseconds)
print(df.head(10))
sensor_type timestamp value time_diff in milliseconds
0 0 2022-04-04 00:00:00.000 128 6
1 0 2022-04-04 00:00:00.001 128 6
2 0 2022-04-04 00:00:00.002 128 6
3 0 2022-04-04 00:00:00.003 128 6
4 0 2022-04-04 00:00:00.004 128 6
5 0 2022-04-04 00:00:00.005 128 6
6 0 2022-04-04 00:00:00.006 128 6
7 1 2022-04-04 00:00:00.007 128 10
8 1 2022-04-04 00:00:00.008 128 10
9 1 2022-04-04 00:00:00.009 128 10
我的解决方案与@Daniel Weigel 几乎相同,只是我使用 lambda
来计算差异。
我有一个庞大的数据集,其中包含按时间顺序(按时间戳)和传感器类型排序的各种传感器数据。我想通过从最后一个条目中减去传感器的第一个条目来计算以秒为单位的过程持续时间。这是用 python 和 pandas 完成的。附上一个例子,以便更好地理解: enter image description here
我想从每种传感器类型的最后一行中减去第一行以获得以秒为单位的过程持续时间(即第 8 行减去第 1 行:2022-04-04T09:44:56.962Z - 2022-04- 04T09:44:56.507Z = 0.455 秒)。 然后应将持续时间写入传感器类型最后一行中新创建的列。
提前致谢!
假设您的 'timestamp' 列已经 'to_datetime' 转换,这行得通吗?
df['diffPerSensor_type']=df.groupby('sensor_type')['timestamp'].transform('last')-df.groupby('sensor_type')['timestamp'].transform('first')
然后你可以用这个提取你的秒数
df['diffPerSensor_type'].dt.seconds
如果有人想重现一个例子,这里有一个df:
import pandas as pd
df = pd.DataFrame({
'sensor_type' : [0]*7 + [1]*11 + [13]*5 + [8]*5,
'timestamp' : pd.date_range('2022-04-04', periods=28, freq='ms'),
'value' : [128] * 28
})
df['time_diff in milliseconds'] = (df.groupby('sensor_type')['timestamp']
.transform(lambda x: x.iloc[-1]-x.iloc[0])
.dt.components.milliseconds)
print(df.head(10))
sensor_type timestamp value time_diff in milliseconds
0 0 2022-04-04 00:00:00.000 128 6
1 0 2022-04-04 00:00:00.001 128 6
2 0 2022-04-04 00:00:00.002 128 6
3 0 2022-04-04 00:00:00.003 128 6
4 0 2022-04-04 00:00:00.004 128 6
5 0 2022-04-04 00:00:00.005 128 6
6 0 2022-04-04 00:00:00.006 128 6
7 1 2022-04-04 00:00:00.007 128 10
8 1 2022-04-04 00:00:00.008 128 10
9 1 2022-04-04 00:00:00.009 128 10
我的解决方案与@Daniel Weigel 几乎相同,只是我使用 lambda
来计算差异。