pandas / json中的点符号

时间:2016-10-28 02:50:23

标签: python json pandas notation

有人可以解释一下为什么我不能用点符号访问从json创建的pandas数据帧。或者至少,如果数据帧没有太嵌套,则不行。

如果我的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
    }
  }
}

然后,做:

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

将返回

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

1 个答案:

答案 0 :(得分:1)

在第一个实例中,mass是一个Series,它为其下的每个项创建属性。它不会重复这个过程n级别,因此在第二个实例中,mass只是一个dict,您需要使用括号表示法来访问。