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
如何减去 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
给定一个数据帧 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
如何减去 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