我有一个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
答案 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)