假设我有 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
