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