2017-10-04 17 views
1

にマッピングする列の値によってパンダに辞書を作成する:Iは、次のデータフレーム有するヘッダ

F1: 


head  drowsiness  sweat  
head_P  D_P   sw_f 
head_S  D-H   sw_h 
head_F  D_L   sw_l 

を私は次のように列のヘッダに列のすべての値をマッピングすることにより、辞書を作成する必要があります。

Dic = {head_p:head, head_S: head, head_F: head, D_P: drowsiness, D-H:drowsiness , D_L: drowsiness, sw_f: sweat, sw_h: sweat , sw_l: sweat } 

各列のリストを作成し、それをヘッダーにマップしましたが、そのような辞書の作成方法はわかりません。ありがとうございました!

+0

を追加します。 ouldは、辞書に重複するキーを入れることはできないことを理解しているので、これは不可能です。それ以外に何がありますか? –

+0

@COLDSPEED、申し訳ありません、私はそれを編集しました。 – Mary

答えて

3

melt​​to_dict

df 

    head drowsiness sweat 
0 head_P  D_P sw_f 
1 head_S  D-H sw_h 
2 head_F  D_L sw_l 

df.melt().set_index('value').to_dict()['variable'] 

{'D-H': 'drowsiness', 
'D_L': 'drowsiness', 
'D_P': 'drowsiness', 
'head_F': 'head', 
'head_P': 'head', 
'head_S': 'head', 
'sw_f': 'sweat', 
'sw_h': 'sweat', 
'sw_l': 'sweat'} 

このエラーが発生した場合:あなたはそう、パンダの古いバージョン(< 0.20)を使用している意味

AttributeError: 'DataFrame' object has no attribute 'melt 

代わりに、pd.melt

pd.melt(df).set_index('value').to_dict()['variable'] 
+0

次のエラーが返されます。AttributeError: 'DataFrame'オブジェクトに 'melt'属性がありません。 – Mary

+0

@Mary古いバージョンのpandasを使用している必要があります。 'pdmelt(df).set_index(' value ')に変更してください。to_dict()['変数 '] ' –

3

あなたはshをT

df.melt().set_index('value').T.to_dict('records') 
Out[277]: 
[{'D-H': 'drowsiness', 
    'D_L': 'drowsiness', 
    'D_P': 'drowsiness', 
    'head_F': 'head', 
    'head_P': 'head', 
    'head_S': 'head', 
    'sw_f': 'sweat', 
    'sw_h': 'sweat', 
    'sw_l': 'sweat'}] 
3

オプション1

dict(zip(df.values.ravel(), df.columns.repeat(len(df)))) 

{'D-H': 'drowsiness', 
'D_L': 'sweat', 
'D_P': 'head', 
'head_F': 'sweat', 
'head_P': 'head', 
'head_S': 'drowsiness', 
'sw_f': 'head', 
'sw_h': 'drowsiness', 
'sw_l': 'sweat'} 

オプション2

dict((v, h) for r, h in zip(df.values, df.columns) for v in r) 

{'D-H': 'drowsiness', 
'D_L': 'sweat', 
'D_P': 'head', 
'head_F': 'sweat', 
'head_P': 'head', 
'head_S': 'drowsiness', 
'sw_f': 'head', 
'sw_h': 'drowsiness', 
'sw_l': 'sweat'} 
+2

あなたの素敵な方は – Wen

+0

ありがとうございます。 – piRSquared

関連する問題