На каждой итерации for dane3 in df
вы переопределяете dx
в соответствии с текущим json ответом DataFrame
. Это означает, что вы сохраняете только информацию, относящуюся к последнему обработанному сообщению.
Вместо этого вы можете хранить список нормализованных JSON DataFrame
s и concat
enate. после обработки всех сообщений.
Вы также используете один и тот же идентификатор сообщения на каждой итерации for
l oop, через df['id']
и linki[0]
, что означает, что вы получит только данные для первого поста. Вместо этого ваш l oop должен перебирать значения столбца 'id'
вашего DataFrame
, то есть for post_id in df['id']
.
post_data = []
with o.urlopen(url) as jfile:
data1 = json.load(jfile)
df = json_normalize(data1["data"])
for post_id in df['id']:
linki = link1 + post_id + link2
with o.urlopen(linki) as file2:
data2 = json.load(file2)
dx = json_normalize(data2["data"],
record_path ='values',
meta =['id', 'name', 'title'])
dx['ident'] = dx['id'][0].split("/")[0]
post_data.append(dx)
dn7 = pd.concat(post_data).pivot(index='ident', columns='name', values='value')