在不同数据帧上的熊猫乘法

时间:2020-07-23 21:58:04

标签: python python-3.x pandas

我在df1中有以下数据帧(df2pandas)。我要实现的是将df1df2匹配的列标题相乘并创建df3。预期结果是

df3 = pd.DataFrame([{'A':2,'B':2.2,'C':20},
                    {'A':2.5,'B':2.8,'C':24},
                    {'A':3.0,'B':2.8,'C':24.8}])

我尝试使用df3 = df1.mul(df2,axis=1),但是它不起作用。它产生了很多NaN并提供了额外的2列。谁能分享一些提示?

df1 = pd.DataFrame([{'A':20,'B':22,'C':25},
                    {'A':25,'B':28,'C':30},
                    {'A':30,'B':28,'C':31}])

df2 = pd.DataFrame([{'X':'A','Y':0.1},
                    {'X':'B','Y':0.1},
                    {'X':'C','Y':0.8}])

2 个答案:

答案 0 :(得分:2)

我将public Command SendCommand => new Command(async () => await SendMessage(OutGoingText)); 更改为df2 -这就是您要的东西吗?

s2

结果是:

df1 = pd.DataFrame([{'A':20,'B':22,'C':25},
                    {'A':25,'B':28,'C':30},
                    {'A':30,'B':28,'C':31}])

s2 = pd.Series(data=[0.1, 0.1, 0.8],
               index=['A', 'B', 'C'])

df1.mul(s2)

答案 1 :(得分:1)

获取各列以使其与索引对齐,相乘并拆栈以返回结果

df1.stack().mul(df2.set_index("X").Y, level=-1).unstack()

     A   B   C
0   2.0 2.2 20.0
1   2.5 2.8 24.0
2   3.0 2.8 24.8

注意:这适用于更多行(如您在评论中提到的50行)