我有两个pandas数据帧,如下所示:
import pandas as pd
df_one = pd.DataFrame( {
'A': [1,1,2,3,4,4,4],
'B1': [0.5,0.0,0.2,0.1,0.3,0.2,0.1],
'B2': [0.2,0.3,0.1,0.5,0.3,0.1,0.2],
'B3': [0.1,0.2,0.0,0.9,0.0,0.3,0.5]} );
df_two = pd.DataFrame( {
'A': [1,2,3,4],
'C1': [1.0,9.0,2.1,9.0],
'C2': [2.0,3.0,0.7,1.1],
'C3': [5.0,4.0,2.3,3.4]} );
df_one
A B1 B2 B3
0 1 0.5 0.2 0.1
1 1 0.0 0.3 0.2
2 2 0.2 0.1 0.0
3 3 0.1 0.5 0.9
4 4 0.3 0.3 0.0
5 4 0.2 0.1 0.3
6 4 0.1 0.2 0.5
df_two
A C1 C2 C3
0 1 1.0 2.0 5.0
1 2 9.0 3.0 4.0
2 3 2.1 0.7 2.3
3 4 9.0 1.1 3.4
我想做的是计算一个标量积,我将把第一个数据帧的行乘以第二个数据帧的行,即\sum_i B_i * C_i
,但这样做的方式是,只有在A
列的值在两个帧中匹配时,第一个数据帧中的一行乘以第二个数据帧中的一行。我知道如何循环和使用if's,但我想用一种更有效的纽姆式或熊猫式的方式来做。非常感谢您的帮助:)
我将压缩这些行,并使用一个过滤器或只接受列匹配的行的理解。在
有点像
假设您愿意为scalar_产品填写适当的材料
(抱歉,如果我在这里做了一个thinko-这段代码只是作为示例用途,还没有经过测试!)在
另一种方法与此类似:
这将导致:
^{pr2}$不确定是否需要列A的唯一值(如果需要,请对下面的结果使用groupby)
相关问题 更多 >
编程相关推荐