Pandas 从查找的 DataFrame 列中减去 DataFrame 列

Pandas subtract DataFrame column from lookup DataFrame column

给定一个数据帧 test 和另一个数据帧 lookup

test = pd.DataFrame( [['a',1],
                      ['a',2], 
                      ['b',9]], columns = ['id', 'n'])

lookup_mins = pd.DataFrame( [['a',1], 
                             ['b',9], 
                             ['c',7]] , columns = ['id', 'n'])

尝试用 test 中的每个值 n 减去 n 并匹配 lookup_mins 中的 id 使用

s = lookup_mins.groupby(['id'])['n'].transform('min')
test['n2'] = test['n'] - s

预期结果,

id n n2
a  1 0
a  2 1
b  9 0

但取而代之

id n n2
a  1 0
a  2 -7
b  9  9

如何减去 testlookup_mins 以获得上述预期结果?

Series.map 与聚合一起使用 min:

s = lookup_mins.groupby(['id'])['n'].min()
test['n2'] = test['n'] - test['id'].map(s)
print (test)
  id  n  n2
0  a  1   0
1  a  2   1
2  b  9   0