2017-08-14 4 views
0

に複数の列から辞書の作成:パンダ次のデータフレームDF1について

私は列A、B、C、およびD

でカラム文から辞書を作成する必要が

sentence   A  B  C  D  F  G 
dizzy   1  1  0  0  k  1 
Head   0  0  1  0  l  1 
nausea   0  0  0  1  fd  1 
zap    1  0  1  0  g  1 
dizziness  0  0  0  1  V  1  

次のステップは、Iは、値A、B、CにデータフレームF2における文章列をマッピングする必要、およびDは、出力は次のようである:

sentences   A  B  C  D    
    dizzy   1  1  0  0 
    happy    
    Head   0  0  1  0    
    nausea   0  0  0  1 
    fill out   
    zap    1  0  1  0    
    dizziness  0  0  0  1  

    This is my code, but just for one column, I do not know how to do it for several columns: 


equiv = df1.set_index (sentences)[A].to_dict() 
df2[A]=df2[sentences].apply (lambda x:equiv.get(x, np.nan)) 

おかげ。

答えて

0

IIUC:

セットアップ:

In [164]: df1 
Out[164]: 
    sentence A B C D F G 
0  dizzy 1 1 0 0 k 1 
1  Head 0 0 1 0 l 1 
2  nausea 0 0 0 1 fd 1 
3  zap 1 0 1 0 g 1 
4 dizziness 0 0 0 1 V 1 

In [165]: df2 
Out[165]: 
    sentences 
0  dizzy 
1  happy 
2  Head 
3  nausea 
4 fill out 
5  zap 
6 dizziness 

ソリューション:

In [174]: df2[['sentences']].merge(df1[['sentence','A','B','C','D']], 
            left_on='sentences', 
            right_on='sentence', 
            how='outer') 
Out[174]: 
    sentences sentence A B C D 
0  dizzy  dizzy 1.0 1.0 0.0 0.0 
1  happy  NaN NaN NaN NaN NaN 
2  Head  Head 0.0 0.0 1.0 0.0 
3  nausea  nausea 0.0 0.0 0.0 1.0 
4 fill out  NaN NaN NaN NaN NaN 
5  zap  zap 1.0 0.0 1.0 0.0 
6 dizziness dizziness 0.0 0.0 0.0 1.0 
関連する問題