Python 数据帧与序列的列式相乘(不匹配索引)

Python 数据帧与序列的列式相乘(不匹配索引),python,pandas,Python,Pandas,我想使用python的pandas进行一些简单的矩阵计算,在尝试执行以下简单乘法时遇到了一个问题: df = df.mul(column, axis=1) df是一个3x3数据帧,看起来像: 441090707 441090801 441090408 441090408 0.255061 0.202650 0.689114 441090707 0.287952 0.218351 0.116750

我想使用python的pandas进行一些简单的矩阵计算,在尝试执行以下简单乘法时遇到了一个问题:

df = df.mul(column, axis=1)
df是一个3x3数据帧,看起来像:

                    441090707  441090801  441090408
        441090408   0.255061   0.202650   0.689114
        441090707   0.287952   0.218351   0.116750
        441090801   0.456987   0.578998   0.194136
            area
            441090707     179.727362
            441090801     698.939741
            441090408    1377.909774
            Name: Test, dtype: float64
而列是一个系列,看起来像:

                    441090707  441090801  441090408
        441090408   0.255061   0.202650   0.689114
        441090707   0.287952   0.218351   0.116750
        441090801   0.456987   0.578998   0.194136
            area
            441090707     179.727362
            441090801     698.939741
            441090408    1377.909774
            Name: Test, dtype: float64

乘法会抛出一个RuntimeWarning(“Pandas在引擎盖下使用numpy,因此您只需将它们作为矩阵进行乘法即可。使用一个伪案例:

import pandas as pd
df=pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})
cl=pd.Series([1,2,3])
ans=df.values @ cl
只需使用
即可获得2d numpy数组

编辑

所以上面的部分并不是你想要的。你想要一个元素级的乘法,但问题是你的数据帧和序列的索引有不同的顺序。因为使用
是有效的,那么我认为这意味着你有相同数量的索引,没有索引丢失。你只需要
重新索引
你的专栏

ans=df.mul(cl.reindex(df.index).values,axis=1)

我无法重现这个问题。你能添加pandas版本和一个最小的代码片段来重现吗?谢谢,但是如果使用df.values,我必须依赖于列的顺序是否正确。如果某些列的顺序不正确,结果就没有意义。这就是为什么我首先要使用pandas,所以你想要的是elementwise乘法?是的,一列的每一个元素(来自数据帧)都应该乘以序列中的相同值(因此df列和序列索引匹配)。很抱歉,回复太晚了,我现在只是做了一个更改来测试它。它正在工作。非常感谢