矢量化熊猫:提取多个数据帧并连接在一起

时间:2019-07-02 08:12:23

标签: pandas vectorization

我需要从存储在初始数据帧每一行中的json数据中提取数据帧,并将它们全部连接在一起。目前,它在迭代过程中对我有效,并且需要花很多时间。

输入数据是包含JSON字典的数据框:

print(json_table)

         json_responce   timestamp              request
27487   {'explore_tabs.. 2019-07-02 02:05:25    Lisboa, Portugal
27488   {'explore_tabs.. 2019-07-02 02:05:27    Ribeira, Portugal

json_responce字段正被解包到数据框:

from pandas.io.json import json_normalize
from ast import literal_eval

json = literal_eval(json_table.loc[0,'json_responce'])
df_normalized = json_normalize(json['explore_tabs'][0]['sections'][0] 
['listings'])

为初始df的每一行提供了一个很好的展开数据框

我有27000行包含df的json,我遍历了初始df,它在每一步都创建了新的df,并将其连接到final_df,以将所有数据连接在一起:

def unwrap_json_and_concat(json_table):
    final_df = pd.DataFrame()
    for i in json_table.index:
        row = literal_eval(json_table.loc[i,'json_responce'])
        df = json_normalize(row['explore_tabs'][0]['sections'] 
     [0]['listings'])
        final_df = pd.concat([final_df,df])
    return final_df

正如预期的那样,要花很多时间才能迭代,由于final_df的大小增加,计算结束时速度明显减慢。

我知道如何为apply创建函数,但是由于事实上无论如何每行都会创建一个新的数据框,因此我相信它也不会带来太大的帮助。

如何向量化此计算? 谢谢!

0 个答案:

没有答案