【发布时间】:2019-06-13 00:39:24
【问题描述】:
我正在尝试将 YAML 文件中的数据获取到 Pandas DataFrame 中。以data.yml为例:
---
- doc: "Book1"
reviews:
- reviewer: "Paul"
stars: "5"
- reviewer: "Sam"
stars: "2"
- doc: "Book2"
reviews:
- reviewer: "John"
stars: "4"
- reviewer: "Sam"
stars: "3"
- reviewer: "Pete"
stars: "2"
...
所需的 DataFrame 如下所示:
doc reviews.reviewer reviews.stars
0 Book1 Paul 5
1 Book1 Sam 2
2 Book2 John 4
3 Book2 Sam 3
4 Book2 Pete 2
我尝试以不同的方式将 YAML 数据提供给 Pandas(例如 with open('data.yml') as f: data = pd.DataFrame(yaml.load(f))),但单元格始终包含嵌套的字典。这个solution works for general JSON data,但它是相当多的代码,看起来可能存在一个更简单的 YAML 解决方案。
是否有内置的或 Pythonic 的方法来非规范化 YAML 以便以这种方式转换为 Pandas 数据框?
【问题讨论】:
-
避免在 cmets 中回答问题。
-
难道你不能使用 pyyaml 之类的东西将 yaml 作为对象读取,然后将其加载到 df 中吗?
-
“似乎存在一个更简单的 YAML 解决方案” 你为什么这么认为,因为 YAML 是 JSON 的超集,而 YAML 的解析器至少要复杂一个数量级?你没有说明你是如何到达
yaml的,但如果那是PyYAML模块,那么使用yaml.load()既没有必要也有潜在的危险。 -
能否告诉我
json_normalize是否解决了您的问题? -
@coldspeed 是的,确实如此,因此获得了赞成票(我想这个问题的措辞足够好,可以赞成吗?)。为我节省了很多时间。我喜欢在标记为已回答前几天提出问题,以防其他人有不同的方式,但我可能会在周末结束前将你的标记为已接受。非常感谢您的帮助。
标签: python pandas dataframe yaml denormalization