2015-10-12 24 views
3

有人可以爲我提出最符合以下要求的pythonic和高效方法。數據框和字典的常見實體產品

我有一個熊貓的數據幀(D1)如下:

jam  lam  mam pam qam sam uam wam 
0 1  1.30103 1 1 1 1 1 1 

0 is the id 

而且,一本字典(D2):

{u'bam': 1.0, 
u'ham': 1.0, 
u'jam': 0.82390874094431876, 
u'kam': 1.0, 
u'lam': 1.0, 
u'mam': 0.82390874094431876, 
u'pam': 1.0, 
u'ram': 1.0, 
u'sam': 0.82390874094431876, 
u'tam': 1.0} 

我的要求很簡單,乘以共同的實體。

Example Lam->1.30103 of d1 will be multiplied to lam->(1.0) of d2 

,我希望的輸出是一個數據框(有點像下圖):

jam  lam  mam  pam qam sam uam wam 
0 0  1.30103 0.82390 1 0 0.82 0 0 

只有林,MAM,PAM和SAM具有價值,因爲他們是在D1和D2共同的實體。它們的對應值也相乘。

回答

3

我會構建一個DF從字典,它們相乘,然後再次選擇從D1中的cols:

In [107]: 
df2 = pd.DataFrame.from_dict(d2, orient='index').T 
df2 

Out[107]: 
    tam  sam ram bam  mam pam lam kam  jam ham 
0 1 0.823909 1 1 0.823909 1 1 1 0.823909 1 

In [114]: 
(df * df2)[df.columns].fillna(0) 

Out[114]: 
     jam  lam  mam pam qam  sam uam wam 
0 0.823909 1.30103 0.823909 1 0 0.823909 0 0