Skip to main content
 首页 » 编程设计

python之从另一个 Pandas DataFrame 引用一行

2025年05月04日23落叶无声

假设我有 2 个 DataFrame:

数据框 1

A  B 
a  1 
b  2 
c  3 
d  4 

数据框2:

C D 
a c  
b a 
a b  

目标是向 DataFrame 2 ('E') 添加一列。

C D E 
a c (1-3=-2) 
b a (2-1=1) 
a b (1-2=-1) 

如果这是 excel,公式可能类似于“=vlookup(A1,DataFrame1,2)-vlookup(B1,DataFrame1,2)”。知道这个公式在 Python 中是什么样子吗?

谢谢!

请您参考如下方法:

Pandas 系列可以被认为是从其索引到其值的映射。 在这里,我们希望使用第一个数据帧 df1 作为从列 A 到列 B 的映射。所以自然而然的做法是将 df1 转换为 Series:

s = df1.set_index('A')['B'] 
# A 
# a    0 
# b    1 
# c    2 
# d    3 
# Name: B, dtype: int64 

现在我们可以使用 Series.map基于 s 的 Series 中“查找”值的方法:

import pandas as pd 
df1 = pd.DataFrame({'A':list('abcd'), 'B':[1,2,3,4]}) 
df2 = pd.DataFrame({'C':list('aba'), 'D':list('cab')}) 
s = df1.set_index('A')['B'] 
df2['E'] = df2['C'].map(s) - df2['D'].map(s) 
 
print(df2) 

产量

   C  D  E 
0  a  c -2 
1  b  a  1 
2  a  b -1