为什么这段Python代码使我的concat数据框变得如此混乱?

时间:2019-03-01 23:47:57

标签: python json pandas csv dataframe

我正在使用一个146 000行的json文件,我需要绘制此信息的一些列。一次将所有这些保存到数据帧中确实很费时,所以我开始使用read_csv分配一个块大小,正如您在我的代码中看到的那样,因为我不需要所有列,所以我创建了一个我真正需要的带有列的新数据框,然后进行合并并保存到csv文件中。一旦我运行我的代码使我无法按顺序保存,您可以在图片中看到第一次完美运行,并且还知道该代码应该一遍又一遍地重复相同的第一行,但是为什么显示第一个块像这个??请你能帮忙吗?在这一点上,任何想法都是有很大帮助的!谢谢!!

for i in pd.read_json('info_img_havana.json',chunksize=10,lines=True):
df=i.id.to_frame()
df2=json_normalize(i.dates)['taken'].to_frame()
df3=pd.concat([df,df2],axis=1)

一旦我打印df3,就会给我这个信息:

enter image description here

json文件的一部分

enter image description here

2 个答案:

答案 0 :(得分:0)

完成!是索引的问题。此代码有效:

for i in pd.read_json('info_img_havana.json', chunksize=10, lines=True):
    df = pd.DataFrame(dict(d=json_normalize(i.dates)['taken']))
    df.set_index(i.index,inplace=True)

答案 1 :(得分:0)

是的,问题出在连续的Frame索引上,所以当您创建一个新的DataFrame时,它会使用自己的索引。 您可以通过添加以下代码进行检查

df1 = pd.DataFrame({'index_chunk':i.index,'index_df':df.index})
print(df1)