Как денормализовать YAML для Pandas Dataframe? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь получить данные из файла 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))), но ячейки всегда содержат вложенные диктанты.Это решение работает для общих данных JSON , но оно довольно немного кода и кажется, что может существовать более простое решение для YAML.

Существует ли встроенный или Pythonic способ денормализацииYAML для преобразования в Pandas Dataframe?

1 Ответ

0 голосов
/ 18 января 2019

Вы должны использовать json_normalize, чтобы сгладить словарь после загрузки YAML:

pd.io.json.json_normalize(yaml.load(f), 'reviews', 'doc')

  reviewer stars    doc
0     Paul     5  Book1
1      Sam     2  Book1
2     John     4  Book2
3      Sam     3  Book2
4     Pete     2  Book2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...