【发布时间】:2016-11-16 22:57:19
【问题描述】:
我正在尝试计算对象与其基准之间的差异。我有一个数据集,其中包含所有对象的每日记录及其对应的值,如下所示:
obj_df
date id value_a value_b value_c value_d benchmark_id
01/21/2015 abc 10 41 19 22 efg
01/22/2015 abc 15 43 11 21 efg
01/21/2015 xyz 16 45 13 26 tuv
01/22/2015 xyz 13 48 12 22 tuv
01/21/2015 tru 10 39 15 21 efg
01/21/2015 tru 11 37 13 20 efg
我也有关于基准测试的数据。值列在数据框之间共享。基准集中的 id 对应于原始对象数据帧中的基准 id。
bm_df
date id value_a value_b value_c value_d
01/21/2015 efg 12 40 12 20
01/22/2015 efg 15 41 14 21
01/21/2015 tuv 14 42 11 19
01/22/2015 tuv 13 43 19 17
我正在尝试找到一种简单的方法来返回一个数据框,它可以让我获得对象值和相应基准值之间的差异,从而获得一个看起来像这样的数据框。
diff_df
date id diff_a diff_b diff_c diff_d benchmark_id
01/21/2015 abc -2 1 7 2 efg
01/22/2015 abc 0 2 -3 0 efg
01/21/2015 xyz 2 3 2 7 tuv
01/22/2015 xyz 0 5 -7 5 tuv
01/21/2015 tru -4 -3 4 2 efg
01/21/2015 tru -2 -6 -6 3 efg
需要注意的几点:
- 对象多于基准,因此索引的大小不会相同。
- 每个对象都有一个基准。
- 我并不特别关心原始值。只是不同而已。
- 一些基准对应多个对象。例如,'abc' 和 'tru' 都使用 'efg' 作为基准。
【问题讨论】:
-
这个链接似乎非常接近我想要做的:stackoverflow.com/questions/20100717/…