python,将json格式列表更改为数据框

时间:2016-11-08 00:59:24

标签: python json

*js=['{"id":42352,"user_id":11770,"recipient_id":29936,"exchange_rate_list_id":39298,"send_amount_cents":"73860000","send_amount_currency":"KRW","commission_cents":"3000000","commission_currency":"KRW","receive_amount_cents":"3000000","receive_amount_currency":"PHP","save_amount_cents":"3336382","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T09:10:26.751Z","updated_at":"2016-10-28T09:10:26.751Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"708000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42362,"user_id":995,"recipient_id":13068,"exchange_rate_list_id":39306,"send_amount_cents":"37500000","send_amount_currency":"KRW","commission_cents":"1875000","commission_currency":"KRW","receive_amount_cents":"1509500","receive_amount_currency":"PHP","save_amount_cents":"3411736","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T10:22:35.831Z","updated_at":"2016-10-28T10:22:35.831Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"472000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42351,"user_id":3563,"recipient_id":29935,"exchange_rate_list_id":39298,"send_amount_cents":"8703000","send_amount_currency":"KRW","commission_cents":"436000","commission_currency":"KRW","receive_amount_cents":"350000","receive_amount_currency":"PHP","save_amount_cents":"4413495","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T09:08:41.488Z","updated_at":"2016-10-28T09:08:41.488Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"283000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42359,"user_id":2657,"recipient_id":27757,"exchange_rate_list_id":39302,"send_amount_cents":"9937000","send_amount_currency":"KRW","commission_cents":"497000","commission_currency":"KRW","receive_amount_cents":"400000","receive_amount_currency":"PHP","save_amount_cents":"4369830","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T09:47:35.891Z","updated_at":"2016-10-28T09:47:35.891Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"283000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42341,"user_id":4472,"recipient_id":29931,"exchange_rate_list_id":39290,"send_amount_cents":"49727000","send_amount_currency":"KRW","commission_cents":"2487000","commission_currency":"KRW","receive_amount_cents":"2000000","receive_amount_currency":"PHP","save_amount_cents":"2987161","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T07:45:21.924Z","updated_at":"2016-10-28T07:45:21.924Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"472000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42342,"user_id":4471,"recipient_id":17086,"exchange_rate_list_id":39292,"send_amount_cents":"25000000","send_amount_currency":"KRW","commission_cents":"1250000","commission_currency":"KRW","receive_amount_cents":"1005500","receive_amount_currency":"PHP","save_amount_cents":"3846653","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T08:07:36.936Z","updated_at":"2016-10-28T08:07:36.936Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"354000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42343,"user_id":4471,"recipient_id":12681,"exchange_rate_list_id":39292,"send_amount_cents":"6000000","send_amount_currency":"KRW","commission_cents":"300000","commission_currency":"KRW","receive_amount_cents":"241300","receive_amount_currency":"PHP","save_amount_cents":"4506244","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T08:09:24.871Z","updated_at":"2016-10-28T08:09:24.871Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"236000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42198,"user_id":9950,"recipient_id":29834,"exchange_rate_list_id":39165,"send_amount_cents":"7453000","send_amount_currency":"KRW","commission_cents":"373000","commission_currency":"KRW","receive_amount_cents":"300000","receive_amount_currency":"PHP","save_amount_cents":"4451416","save_amount_currency":"KRW","status":0,"created_at":"2016-10-27T10:58:31.712Z","updated_at":"2016-10-27T10:58:31.712Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"0","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42199,"user_id":2001,"recipient_id":29835,"exchange_rate_list_id":39166,"send_amount_cents":"4969000","send_amount_currency":"KRW","commission_cents":"249000","commission_currency":"KRW","receive_amount_cents":"200000","receive_amount_currency":"PHP","save_amount_cents":"4537501","save_amount_currency":"KRW","status":0,"created_at":"2016-10-27T11:00:02.677Z","updated_at":"2016-10-27T11:00:02.677Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"188000","external_fee_currency":"KRW","sender_country":"KR"}']*

我有一个名为js的json格式的字符串列表。

但是当我做的时候

pd.read_json(js)

我收到错误说

  

TypeError Traceback(最近一次调用最后一次)    in()   ----> 1 pd.read_json(js)

     

// anaconda / lib / python2.7 / site-packages / pandas / io / json.pyc in> read_json(path_or_buf,orient,typ,dtype,convert_axes,convert_dates,> keep_default_dates,numpy,precise_float,date_unit )      209 obj = FrameParser(json,orient,dtype,convert_axes,> convert_dates,      210 keep_default_dates,numpy,precise_float,    - > 211 date_unit).parse()      212      213如果typ =='series'或obj是None:

     

// anaconda / lib / python2.7 / site-packages / pandas / io / json.pyc解析(个体经营)      277      278其他:    - > 279 self._parse_no_numpy()      280      281如果self.obj为None:

     

// anaconda / lib / python2.7 / site-packages / pandas / io / json.pyc in> _parse_no_numpy(self)      494 if orient ==“columns”:      495 self.obj = DataFrame(    - > 496次加载(json,precise_float = self.precise_float),> dtype = None)      497 elif orient ==“split”:      498 decoding = dict((str(k),v)

     

TypeError:预期的字符串或Unicode

我通过

来实现它
df = pd.DataFrame()

for j in js:

    data = pd.read_json(j, typ='list')

    df=df.append(data,ignore_index=True)

永远执行。

我的问题是,如果我被允许一次读取一个列表并将其附加到空数据帧,为什么我只能读取整个列表而不会出现错误?有什么方法可以解决这个问题吗?感谢。

1 个答案:

答案 0 :(得分:0)

import pandas as pd
js=['{"id":42352,"user_id":11770,"recipient_id":29936,"exchange_rate_list_id":39298,"send_amount_cents":"73860000","send_amount_currency":"KRW","commission_cents":"3000000","commission_currency":"KRW","receive_amount_cents":"3000000","receive_amount_currency":"PHP","save_amount_cents":"3336382","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T09:10:26.751Z","updated_at":"2016-10-28T09:10:26.751Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"708000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42362,"user_id":995,"recipient_id":13068,"exchange_rate_list_id":39306,"send_amount_cents":"37500000","send_amount_currency":"KRW","commission_cents":"1875000","commission_currency":"KRW","receive_amount_cents":"1509500","receive_amount_currency":"PHP","save_amount_cents":"3411736","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T10:22:35.831Z","updated_at":"2016-10-28T10:22:35.831Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"472000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42351,"user_id":3563,"recipient_id":29935,"exchange_rate_list_id":39298,"send_amount_cents":"8703000","send_amount_currency":"KRW","commission_cents":"436000","commission_currency":"KRW","receive_amount_cents":"350000","receive_amount_currency":"PHP","save_amount_cents":"4413495","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T09:08:41.488Z","updated_at":"2016-10-28T09:08:41.488Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"283000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42359,"user_id":2657,"recipient_id":27757,"exchange_rate_list_id":39302,"send_amount_cents":"9937000","send_amount_currency":"KRW","commission_cents":"497000","commission_currency":"KRW","receive_amount_cents":"400000","receive_amount_currency":"PHP","save_amount_cents":"4369830","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T09:47:35.891Z","updated_at":"2016-10-28T09:47:35.891Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"283000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42341,"user_id":4472,"recipient_id":29931,"exchange_rate_list_id":39290,"send_amount_cents":"49727000","send_amount_currency":"KRW","commission_cents":"2487000","commission_currency":"KRW","receive_amount_cents":"2000000","receive_amount_currency":"PHP","save_amount_cents":"2987161","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T07:45:21.924Z","updated_at":"2016-10-28T07:45:21.924Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"472000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42342,"user_id":4471,"recipient_id":17086,"exchange_rate_list_id":39292,"send_amount_cents":"25000000","send_amount_currency":"KRW","commission_cents":"1250000","commission_currency":"KRW","receive_amount_cents":"1005500","receive_amount_currency":"PHP","save_amount_cents":"3846653","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T08:07:36.936Z","updated_at":"2016-10-28T08:07:36.936Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"354000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42343,"user_id":4471,"recipient_id":12681,"exchange_rate_list_id":39292,"send_amount_cents":"6000000","send_amount_currency":"KRW","commission_cents":"300000","commission_currency":"KRW","receive_amount_cents":"241300","receive_amount_currency":"PHP","save_amount_cents":"4506244","save_amount_currency":"KRW","status":0,"created_at":"2016-10-28T08:09:24.871Z","updated_at":"2016-10-28T08:09:24.871Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"236000","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42198,"user_id":9950,"recipient_id":29834,"exchange_rate_list_id":39165,"send_amount_cents":"7453000","send_amount_currency":"KRW","commission_cents":"373000","commission_currency":"KRW","receive_amount_cents":"300000","receive_amount_currency":"PHP","save_amount_cents":"4451416","save_amount_currency":"KRW","status":0,"created_at":"2016-10-27T10:58:31.712Z","updated_at":"2016-10-27T10:58:31.712Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"0","external_fee_currency":"KRW","sender_country":"KR"}',
 '{"id":42199,"user_id":2001,"recipient_id":29835,"exchange_rate_list_id":39166,"send_amount_cents":"4969000","send_amount_currency":"KRW","commission_cents":"249000","commission_currency":"KRW","receive_amount_cents":"200000","receive_amount_currency":"PHP","save_amount_cents":"4537501","save_amount_currency":"KRW","status":0,"created_at":"2016-10-27T11:00:02.677Z","updated_at":"2016-10-27T11:00:02.677Z","transfer_list_id":null,"purpose":"living_expenses","external_fee_cents":"188000","external_fee_currency":"KRW","sender_country":"KR"}']
a = pd.read_json('[{}]'.format(','.join(js)))
print(a)