给定一个数据框 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'])
尝试减去每个值 n
在test
按值 n
与匹配id
在lookup_mins
使用
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
如何减去test
和lookup_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
关于python - Pandas 从查找 DataFrame 列中减去 DataFrame 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66312961/