如何在python中操作两个不同的数据帧



我想通过比较两个差分数据帧(a和B(的值来进行数学运算。

A = pd.DataFrame({'a':[1,1,2,2],'s':[10,20,30,40]})
B = pd.DataFrame({'a':[1,2],'I':[5,10]})

我想在a调用a[‘s’]中添加一列,其中元素等于s/(1+I(,其中I是B[‘I’]的值,它们与等于a[‘a’]的列B[‘a‘]的值具有相同的索引。我尝试使用:

A['ss'] = A['s'].apply(lambda s: s/(1+ B['I'].loc[ A['a'].loc[A['s'] == s] == B['a'] ] ) )

但我有

ValueError: Can only compare identically-labeled Series objects

首先在a上合并两者可能是最简单的,这将填充I:的正确值

A2 = A.merge(B, on='a', how='left')

A2现在看起来是这样的:

a   s   I
0   1   10  5
1   1   20  5
2   2   30  10
3   2   40  10

因此您可以将您的操作应用于A2:

A2['ss'] = A2['s']/(1+A2['I'])

最新更新