2016-10-28 11 views
1

jsonからドット表記で作成したpandasデータフレームにアクセスできない理由を誰かに説明できますか?少なくとも、データフレームがネストされていない場合はそうではありません。pandas/jsonのドット表記

私のJSONファイルが構成されている場合:

{ 
    "mass":{ 
    "e": 0.511, 
    "mu": 105.758, 
    "pi0": 134.977, 
    "pi+": 139.570, 
    "k0": 497.648, 
    "k+": 493.667 
    } 
} 

私は完璧に行うことができます。しかし

glob = pd.read_json('Constants/constants.json') 
print glob.mass.e 

、私のJSONファイルは次のように見える場合:やって、その後

{ 
    "physics":{ 
    "mass":{ 
     "e": 0.511, 
     "mu": 105.758, 
     "pi0": 134.977, 
     "pi+": 139.570, 
     "k0": 497.648, 
     "k+": 493.667 
    }, 
    "ckm":{ 
     "ud": 0.97427, 
     "us": 0.22534 
    } 
    }, 
    "experiment":{ 
    "detector":{ 
     "width": 2.56, 
     "height": 2.33, 
     "length": 10.37, 
     "distance": 470 
    }, 
    "decayPipe":{ 
     "length": 50 
    } 
    } 
} 

10は、第1インスタンス質量

AttributeError: 'dict' object has no attribute 'e' 

答えて

1

が返され、その下の各項目のプロパティを作成するシリーズです。このプロセスをnレベル深く繰り返すわけではありません.2番目の例では、大量の括弧を使用してアクセスする必要があります。

+0

わかりました。とにかくドット表記nレベルを深く保つことはありますか? –

+0

AFAIKは簡単に組み込むことはできませんが、自分で行うことができます。基本的な考え方として、gl.physics.mass = pd.Series(gl.physics.mass)と書くことができます。より一般的には、最初のSeriesをループして辞書をチェックしてからSeriesに変換することができますが、これはデータの1次元「列」であるSeriesが通常表現するために使用されるものから遠ざかります。 –

関連する問題