

pythonのPandasデータフレームで、以下のようなデータがあります。

[![画像の説明をここに入力](https://i.stack.imgur.com/7iInf.jpg)](https://i.stack.imgur.com/7iInf.jpg)

これを、以下のように変換する方法を知りたいです。

[code]

    x={'item1':1,'item2':1,'item4':1}
    y={'item1':1,'item3':1}
    
[/code]

ちなみに、これで実行すれば「0」の値も含まれてしまい、惜しいわけです。

[code]

    In:dict(df.ix['x'])
    Out:{'item1': 1, 'item2': 1, 'item3': 0, 'item4': 1}
    
[/code]

説明が不足していれば補足しますので、回答いただければありがたいです。  
よろしくお願いします。


CC BY-SA 3.0
2016-05-29T07:20:05.533
25263
2022-04-06T16:02:25.250
2016-05-29T08:16:24.307
15491
question
python pandas
pythonのPandasデータフレームから、所定の辞書型に変換する方法を教えてください。


`ix()` メソッドでフィルタリングします。

[code]

    >>> import pandas as pd
    >>> df = pd.DataFrame([
          [1, 1, 0, 1], [1, 0, 1, 0]
        ], index=['x', 'y'], columns=['item1','item2','item3', 'item4'])
    >>> df
       item1  item2  item3  item4
    x      1      1      0      1
    y      1      0      1      0
    
    >>> dict(df.ix['x',(df.ix['x'] == 1)])
    {'item2': 1, 'item1': 1, 'item4': 1}
    >>> dict(df.ix['y',(df.ix['y'] == 1)])
    {'item3': 1, 'item1': 1}
    
[/code]


CC BY-SA 3.0
2016-05-29T07:47:19.867
25265
2016-05-29T07:47:19.867
25263
answer


一行で書くならこんな感じですかね

`x, y = [col[col != 0].to_dict() for col in [df.loc[row] for row in
df.index]]`


CC BY-SA 3.0
2016-05-29T08:41:51.323
25266
2016-05-29T08:41:51.323
7754
25263
answer