#json #python-3.x #pandas #dataframe
#json #python-3.x #pandas #фрейм данных
Вопрос:
У меня есть образец json ниже, я хочу, чтобы он был преобразован в фрейм данных pandas. Это данные instagram. Я пробовал несколько подходов, но я не получаю все узлы в виде столбцов pandas.
[
{
"dimensions": {
"height": 734,
"width": 640
},
"display_url": "someurl1",
"edge_liked_by": {
"count": 3797
},
"edge_media_preview_like": {
"count": 3797
},
"edge_media_to_caption": {
"edges": [
{
"node": {
"text": "some text1"
}
}
]
},
"edge_media_to_comment": {
"count": 52
},
"id": "183471293",
"is_video": true,
"location": null,
"owner": {
"id": "191968"
},
"shortcode": "Bl2Nb",
"tags": [
"tag1",
"tag2"
],
"taken_at_timestamp": 153293,
"thumbnail_resources": [
{
"config_height": 150,
"config_width": 150,
"src": "3382263118984904704_n.jpg"
},
{
"config_height": 240,
"config_width": 240,
"src": "904704_n.jpg"
},
{
"config_height": 320,
"config_width": 320,
"src": "904704_n.jpg"
},
{
"config_height": 480,
"config_width": 480,
"src": "904704_n.jpg"
},
{
"config_height": 640,
"config_width": 640,
"src": "904704_n.jpg"
}
],
"thumbnail_src": "904704_n.jpg",
"urls": [
"08864_n.mp4"
],
"video_view_count": 0
}
]
Я хочу, чтобы он был преобразован в столбцы фрейма данных pandas. например, мне нужен «edge_media_to_caption> края> узел> текст» в качестве одного столбца в моем фрейме данных.
Пожалуйста, дайте мне код или логику для этого в python 3.x.
Я попробовал следующее,
data = pd.read_json('file.json')
dimensions display_url edge_liked_by edge_media_preview_like edge_media_to_caption edge_media_to_comment id is_video location owner shortcode tags taken_at_timestamp thumbnail_resources thumbnail_src urls video_view_count
0 {'height': 734, 'width': 640} someurl1 {'count': 3797} {'count': 3797} {'edges': [{'node': {'text': 'some text1'}}]} {'count': 52} 183471293 True NaN {'id': '191968'} Bl2Nb [tag1, tag2] 153293 [{'config_height': 150, 'config_width': 150, '... 904704_n.jpg [08864_n.mp4] 0
df1 = pd.DataFrame(pd.json_normalize(data.edge_media_to_caption))
df1
Комментарии:
1. Пожалуйста, укажите любой код, который вы пробовали, чтобы мы могли исправить вас или указать вам другое направление. Хотя я мог бы ответить на этот вопрос, цель этого сайта — помочь застрявшим программистам, а не написать 100% решение для вас.
2. Привет @DannyVarod: обновил то, что я сделал.
3. Хорошее начало, некоторые столбцы представляют собой простые значения, а некоторые — json. Вы можете переназначить определенные столбцы, например
data['edge_liked_by'] = data['edge_liked_by'].apply(lambda v: json.reads(v)['count'])