#python #json #nested #normalize
Вопрос:
У меня есть набор данных статистики подписчиков LinkedIn в следующем JSON (для удобства понимания удалены многие значения пар ключей). При этом каждый ключ имеет разное количество значений внутренней пары ключей.
Может ли кто-нибудь помочь преобразовать это в вывод CSV с помощью python?
{ "paging": { "start": 0, "count": 10, "links": [] }, "elements": [ { "followerCountsByAssociationType": [ { "followerCounts": { "organicFollowerCount": 2775, "paidFollowerCount": 0 } }, { "followerCounts": { "organicFollowerCount": 13, "paidFollowerCount": 0 }, "associationType": "EMPLOYEE" } ], "followerCountsByRegion": [ { "region": "urn:li:region:7312", "followerCounts": { "organicFollowerCount": 2, "paidFollowerCount": 0 } }, { "region": "urn:li:region:6981", "followerCounts": { "organicFollowerCount": 2, "paidFollowerCount": 0 } }, { "region": "urn:li:region:620", "followerCounts": { "organicFollowerCount": 2, "paidFollowerCount": 0 } } ], "followerCountsBySeniority": [ { "followerCounts": { "organicFollowerCount": 12, "paidFollowerCount": 0 }, "seniority": "urn:li:seniority:8" }, { "followerCounts": { "organicFollowerCount": 5, "paidFollowerCount": 0 }, "seniority": "urn:li:seniority:9" }, { "followerCounts": { "organicFollowerCount": 2, "paidFollowerCount": 0 }, "seniority": "urn:li:seniority:1" } ], "followerCountsByIndustry": [ { "followerCounts": { "organicFollowerCount": 1, "paidFollowerCount": 0 }, "industry": "urn:li:industry:51" }, { "followerCounts": { "organicFollowerCount": 1, "paidFollowerCount": 0 }, "industry": "urn:li:industry:74" }, { "followerCounts": { "organicFollowerCount": 1, "paidFollowerCount": 0 }, "industry": "urn:li:industry:77" }, { "followerCounts": { "organicFollowerCount": 1, "paidFollowerCount": 0 }, "industry": "urn:li:industry:78" }, ], "followerCountsByFunction": [ { "followerCounts": { "organicFollowerCount": 3, "paidFollowerCount": 0 }, "function": "urn:li:function:14" }, { "followerCounts": { "organicFollowerCount": 3, "paidFollowerCount": 0 }, "function": "urn:li:function:21" }, { "followerCounts": { "organicFollowerCount": 2, "paidFollowerCount": 0 }, "function": "urn:li:function:11" }, { "followerCounts": { "organicFollowerCount": 2, "paidFollowerCount": 0 }, "function": "urn:li:function:17" }, { "followerCounts": { "organicFollowerCount": 2, "paidFollowerCount": 0 }, "function": "urn:li:function:1" }, ], "followerCountsByStaffCountRange": [ { "followerCounts": { "organicFollowerCount": 267, "paidFollowerCount": 0 }, "staffCountRange": "SIZE_1001_TO_5000" }, { "followerCounts": { "organicFollowerCount": 185, "paidFollowerCount": 0 }, "staffCountRange": "SIZE_201_TO_500" }, { "followerCounts": { "organicFollowerCount": 131, "paidFollowerCount": 0 }, "staffCountRange": "SIZE_501_TO_1000" }, { "followerCounts": { "organicFollowerCount": 81, "paidFollowerCount": 0 }, "staffCountRange": "SIZE_5001_TO_10000" }, { "followerCounts": { "organicFollowerCount": 74, "paidFollowerCount": 0 }, "staffCountRange": "SIZE_2_TO_10" }, { "followerCounts": { "organicFollowerCount": 10, "paidFollowerCount": 0 }, "staffCountRange": "SIZE_1" } ], "followerCountsByCountry": [ { "followerCounts": { "organicFollowerCount": 1, "paidFollowerCount": 0 }, "country": "urn:li:country:es" }, { "followerCounts": { "organicFollowerCount": 1, "paidFollowerCount": 0 }, "country": "urn:li:country:ph" }, { "followerCounts": { "organicFollowerCount": 1, "paidFollowerCount": 0 }, "country": "urn:li:country:ng" } ], "organizationalEntity": "urn:li:organization:28849398" } ] }
Я попытался использовать json_normalize(data['Elements'])
, но это дает следующий результат Я уверен, что должен быть какой-то параметр, json_normalize()
который может упростить внутреннюю вложенность.
Желаемый результат выглядит следующим образом-
followercounbyассоциацияорганизационный счет подписчиков | followercounbyассоциацияpaidфоллоу-счет | Тип ассоциации | Регион | RegionOrganicFollowercount | RegionpaidFollowercount |
---|---|---|---|---|---|
2775 | 0 | Работник | урна:li:регион:7312 | 2 | 0 |
урна:li:регион:6981 | 2 | 0 |
…….И так далее
Теперь я сделал только небольшую часть вывода, но в основном для стольких записей в последних столбцах (в то время как для остальных это будет null
)
Буду признателен за любую возможную помощь! Спасибо!
Комментарии:
1. Существует множество способов хранения этих данных в файле CSV. Какую конкретную планировку вы имели в виду?
2. Включите в сам вопрос результат, который вы ожидаете для данного ввода. (Пока вы этим занимаетесь, ваш ввод выборки не должен быть таким большим.)
3. Вы имели в виду «Уплощение» в названии вопроса, а не «Откорм»?
4. Эй, @chepner, я добавил желаемый результат (образец-из-за слишком большого количества столбцов) в сам вопрос. Дайте мне знать, как это можно сделать, спасибо 🙂
5. Почему вы пытаетесь создать таблицу в вопросе? CSV-это просто текст с запятыми в качестве разделителей полей. Похоже, вы пытаетесь воссоздать визуальное форматирование таблицы, построенной из файла CSV.