【发布时间】:2017-03-28 07:24:58
【问题描述】:
我正在使用多个测量集,每个测量集包含两个值:日期时间和温度。示例:
# measurement 1:
time | value
00:00:00 | 10.1
00:00:10 | 10.12
00:00:20 | 10.14
00:00:30 | 10.12
00:00:40 | 10.11
00:00:50 | 10.13
# measurement 2:
time | value
00:00:01 | 10.11
00:00:11 | 10.13
00:00:21 | 10.14
00:00:31 | 10.12
00:00:41 | 10.12
00:00:51 | 10.11
# measurement 3:
time | value
00:00:00 | 10.2
00:00:10 | 10.22
00:00:20 | 10.24
00:00:30 | 10.22
00:00:40 | 10.21
00:00:50 | 10.23
我将这些集合加载到 pandas 数据帧中,并使用外连接将它们合并到一个数据帧中:
df = pd.merge(left=df1, right=df2, how='outer', left_on='time', right_on='time', suffixes=("1", "2"))
我想平均三个数据帧的值,但是: 有时时间不完全相同,导致不同行上的值难以取平均值。以测量 2 和测量 3 的连接为例:
# measurement 2 & 3 merged:
time | value2 | value3
00:00:01 | 10.11 | -
00:00:11 | 10.13 | -
00:00:21 | 10.14 | -
00:00:31 | 10.12 | -
00:00:41 | 10.12 | -
00:00:51 | 10.11 | -
00:00:00 | - | 10.2
00:00:10 | - | 10.22
00:00:20 | - | 10.24
00:00:30 | - | 10.22
00:00:40 | - | 10.21
00:00:50 | - | 10.23
在这种情况下,时间并不完全相同,有没有办法将它们放在同一行以便平均?
有时设备会多次(在不同时间)导出数据。这意味着某些测量值不是唯一的(完全相同的时间和完全相同的值)。我如何确保在平均时不考虑这些(双重)测量值?
希望有人能提供帮助。
编辑:添加图片和一些说明 我已经绘制了六个数据集。为了能够更好地解释,我在不同的图表中添加了 0、10、20、30、40 和 50,因为否则有些会相互重叠。黄色、洋红色和青色测量值在值和日期时间上完全重叠,因为它们来自同一来源(除了数据被多次导出)。
绿色和红色数据集的值不同(大约 40)并且没有在完全相同的时间进行测量(例如可以相差几分钟)。
我想从所有这些测量中创建平均线。由于洋红色、青色和黄色是相同的,因此平均值应该是它们的值之一。但从某个角度来看,有蓝色、绿色和红色。在这种情况下,我正在寻找计算出的平均值,但日期时间并不完全相同。
【问题讨论】:
-
如果测量的时间都一样长 - 因此包含相同数量的数据点,您可以忽略时间戳并简单地合并列表,计算逐行平均值
-
遗憾的是,测量值在时间上可能会有很大差异。有些是一周长,有些是一年,它们也不一定一致(我可以有一组上周的和一年前的)
-
测量的时间间隔还固定吗? - 然后你可以把它当作一个序列而不考虑时间信息
-
你只有时间部分还是日期部分?如果你只有时间部分 - 你将如何加入不同日子的测量?您能否发布可重现的数据集,涵盖您在 cmets 中提到的不准确之处?
-
您可以附加它们而不是合并 datraframe,然后按(平均)进行分组