2017-03-21 10 views
1

Ich habe zwei Pandas DataFrames, mit einem von ihnen mit Index und Spalten, die Teilmengen der anderen sind. Zum Beispiel:Pandas multiplizieren DataFrames mit elementweiser Übereinstimmung von Index und Spalte

DF1 =

date  a  b c 
20170101 1.0 2.2 3 
20170102 2.1 5.2 -3.0 
20170103 4.2 1.8 10.0 
... 
20170331 9.8 5.1 4.5 

DF2 =

date  a  c 
20170101 NaN 2.1 
20170103 4  NaN 

Was ich will, ist elementweise Multiplikation mit sowohl den Index und die Spalte passen. dh nur DF1[20170103]['c'] mit DF2[20170103]['c'] multipliziert werden, usw.

Dem resultierenden DF die gleiche Dimension wie der größeren haben sollte (DF1), mit fehlenden Werten in DF2 Satz wie der Original DF1 Wert:

result DF =

date  a  b c 
20170101 1.0 2.2 6.3 
20170102 2.1 5.2 -3.0 
20170103 16.8 1.8 10.0 
... 
20170331 9.8 5.1 4.5 

Was ist der beste/schnellste Weg, dies zu tun? Die realen Matrizen sind riesig und DF2 ist relativ spärlich.

Antwort

1

Ich glaube, Sie vektorisiert Funktion benötigen mul:

df = DF1.mul(DF2, fill_value=1) 
print (df) 
      a b  c 
date      
20170101 1.0 2.2 6.3 
20170102 2.1 5.2 -3.0 
20170103 16.8 1.8 10.0 
20170331 9.8 5.1 4.5 
Verwandte Themen