Pandas 如何使用单行数据帧广播熊猫数据帧?

Pandas 如何使用单行数据帧广播熊猫数据帧?,pandas,Pandas,我有一个数据帧(dall),我有一个具有相同列(行)的单行数据帧。 如何在不编写循环的情况下获得d_结果?我知道我可以将dataframe转换为numpy数组并进行广播,但我想Pandas有一种直接实现的方法。我试过pd.mul,给我结果 dall = pd.DataFrame([[5,4,3], [3,5,5], [6,6,6]], columns=['a','b','c']) row = pd.DataFrame([[-1, 100, 0]], columns=['a','b','c'])

我有一个数据帧(dall),我有一个具有相同列(行)的单行数据帧。 如何在不编写循环的情况下获得d_结果?我知道我可以将dataframe转换为numpy数组并进行广播,但我想Pandas有一种直接实现的方法。我试过pd.mul,给我结果

dall = pd.DataFrame([[5,4,3], [3,5,5], [6,6,6]], columns=['a','b','c'])
row = pd.DataFrame([[-1, 100, 0]], columns=['a','b','c'])
d_result = pd.DataFrame([[-5,400,0], [-3,500,0], [-6,600,0]], columns=['a','b','c'])
达尔

划船

d_结果

     a  b   c
0   -5  400 0
1   -3  500 0
2   -6  600 0

我们可以使用
mul

dall=dall.mul(row.loc[0],axis=1)
dall
Out[5]: 
   a    b  c
0 -5  400  0
1 -3  500  0
2 -6  600  0

可以通过将数据帧obj乘以系列obj来实现这一点。大概是这样的:

dall * row.iloc[0]
我认为这与@WeNYoBen答案基本相同

您还可以将DataFrame obj与DataFrame obj相乘,如下所示。但请注意,NaN值不会传播,因为在乘法之前,NaN值将替换为1.0

dall.mul(row, axis='columns', fill_value=1.0)
dall * row.iloc[0]
dall.mul(row, axis='columns', fill_value=1.0)