我有一个dataframe(dall),我有一个单行dataframe,它具有相同的列( row )。如何在不编写循环的情况下获得d_result?我知道我可以将dataframe转换成numpy数组并广播,但我想Pandas有一种直接做到这一点的方法。我已经试过pd.mul了,给我nan结果。
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 0d_result
a b c
0 -5 400 0
1 -3 500 0
2 -6 600 0发布于 2019-10-21 08:00:15
我们可以使用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发布于 2019-10-21 09:39:31
您可以通过将DataFrame obj与系列obj相乘来实现此目的。如下所示:
dall * row.iloc[0]我认为这与@WeNYoBen的回答本质上是一样的。
您还可以将DataFrame obj乘以DataFrame obj,如下所示。但要注意,NaN值不会传播,因为在乘法之前,NaN值将被替换为1.0。
dall.mul(row, axis='columns', fill_value=1.0)https://stackoverflow.com/questions/58478279
复制相似问题