我正试图计算一个对象和它的基准之间的差异。我有一个包含每天记录所有看起来像这样的对象及其对应的值的数据集:基于熊猫中的外键减去多列
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'作为基准。
这个链接看起来很接近我想要做的: http://stackoverflow.com/questions/20100717/subtract-a-column-from-one-pandas-dataframe-from-another – Charles