Pandas: Multiplication élémentaire de deux dataframes

Je sais comment le faire élément par élément de multiplication entre deux Pandas dataframes. Cependant, les choses se compliquent lorsque les dimensions des deux dataframes ne sont pas compatibles. Pour l'exemple ci-dessous df * df2 est simple, mais df * df3 est un problème:

df = pd.DataFrame({'col1' : [1.0] * 5, 
                   'col2' : [2.0] * 5, 
                   'col3' : [3.0] * 5 }, index = range(1,6),)
df2 = pd.DataFrame({'col1' : [10.0] * 5, 
                    'col2' : [100.0] * 5, 
                    'col3' : [1000.0] * 5 }, index = range(1,6),)
df3 = pd.DataFrame({'col1' : [0.1] * 5}, index = range(1,6),)

df.mul(df2, 1) # element by element multiplication no problems

df.mul(df3, 1) # df(row*col) is not equal to df3(row*col)
   col1  col2  col3
1   0.1   NaN   NaN
2   0.1   NaN   NaN
3   0.1   NaN   NaN
4   0.1   NaN   NaN
5   0.1   NaN   NaN

Dans la situation ci-dessus, comment puis-je multiplier chaque colonne de df avec df3.col1?

Ma tentative: j'ai essayé de reproduire df3.col1 len(df.columns.values) fois pour obtenir un dataframe qui est de la même dimension que df:

df3 = pd.DataFrame([df3.col1 for n in range(len(df.columns.values)) ])
df3
        1    2    3    4    5
col1  0.1  0.1  0.1  0.1  0.1
col1  0.1  0.1  0.1  0.1  0.1
col1  0.1  0.1  0.1  0.1  0.1

Mais cela crée un dataframe de dimensions 3 * 5, alors que je suis au bout de 5*3. Je sais que je peux prendre le transposer avec df3.T() pour obtenir ce dont j'ai besoin, mais je pense que ce n'est pas que le moyen le plus rapide.

source d'informationauteur Rhubarb