2017-10-18 9 views
0

Je veux prendre deux trames de données et les multiplier ensemble pour en faire une troisième.Comment définir toutes les valeurs dans une trame de données pandas à la fois si vous multipliez deux autres trames de données pour le produire?

Dire que j'ai

  HI BYE HE HER 
Date             
2011-01-10 2  2 2 2 
2011-01-13 2  2 2 2  
2011-01-13 2  2 2 2 
2011-01-26 2  2 2 2 

et

  BRO CHICK DUDE MAN 
Date             
2011-01-10 2  2 2  2 
2011-01-13 2  2 2  2  
2011-01-13 2  2 2  2 
2011-01-26 2  2 2  2 

et je veux,

  MY NAME IS SLIM_SHADY 
Date             
2011-01-10 4  4 4  4 
2011-01-13 4  4 4  4  
2011-01-13 4  4 4  4 
2011-01-26 4  4 4  4 

Comment puis-je faire cela en une ligne?

Répondre

3

Convertissez en np.array en utilisant .values et effectuez une multiplication par éléments.

df = pd.DataFrame(df1.values * df2.values, 
     index=df1.index, columns="MY NAME IS SLIM_SHADY".split()) 
print(df) 
      MY NAME IS SLIM_SHADY 
Date         
2011-01-10 4  4 4   4 
2011-01-13 4  4 4   4 
2011-01-13 4  4 4   4 
2011-01-26 4  4 4   4 

Une autre méthode serait de renommer des index, puis appelez df.mul:

df2.columns = df1.columns # could also add df2.index = df1.index for security 
df = df1.mul(df2) 
df.columns="MY NAME IS SLIM_SHADY".split() 

print(df) 
      MY NAME IS SLIM_SHADY 
Date         
2011-01-10 4  4 4   4 
2011-01-13 4  4 4   4 
2011-01-13 4  4 4   4 
2011-01-26 4  4 4   4 
+0

Je préfère le premier. Toi? – dirtysocks45

+0

@ dirtysocks45 Même, c'est beaucoup plus propre que la seconde. –

+0

Ça vous dérange de vérifier mon autre question sur la vectorisation? Mon dernier commentaire sur la réponse acceptée a une question. – dirtysocks45