python - pandas/json 中的点表示法

标签 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'

最佳答案

在第一个实例中,mass 是一个系列,它为其下的每个项目创建属性。它不会重复此过程 n 层深度,因此在第二个实例中,mass 只是一个字典,您需要使用括号表示法来访问。

关于python - pandas/json 中的点表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297313/

相关文章:

python - Pandas 中的索引错误

python - PyKEP python 开普勒工具箱

javascript - 获取值最接近数字 X 的 JSON 数据

python - 我无法在数据框中添加两列

python - Pandas 将多个列与数据框中的特定列进行比较

python - 使用 1 个按钮 Django 提交 2 个自定义 Crispy 表单

python - 如何将 Python 字典对象转换为 numpy 数组

javascript - 转换 JSON 变量中的日期格式

ios - Restkit 基本 url 响应

python - 写入和读取 csv 文件时出现特殊字符 (\r) 问题