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

时间:2019-10-20 23:57:52

标签: pandas

我有一个dataframe(dall),我有一个具有相同列(行)的单行数据帧。 如何在不编写循环的情况下获取d_result?我知道我可以将数据帧转换为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'])

dall

    a   b   c
0   5   4   3
1   3   5   5
2   6   6   6

    a   b   c
0   -1  100 0

d_result

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以通过将DataFrame obj乘以Series obj来实现。像这样:

dall * row.iloc[0]

我认为这与@WeNYoBen答案基本相同。

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

dall.mul(row, axis='columns', fill_value=1.0)