Pandas数据帧方法`to_gbq`处理数据帧中的嵌套数据

时间:2017-12-13 12:45:28

标签: python pandas google-bigquery

我已使用pandas read_json将嵌套对象的json数据读入数据框。

我想使用pandas Google Big Query将这些数据推送到to_gbq,但对于嵌套元素,会出现如下错误:

StreamingInsertError: Error at Row: 0, Reason: invalid, Location: payment_details, Message: This field is not a record.

其中数据框如下所示:

df['payment_details'][1]
{u'credit_card_bin': u'xxxx', u'avs_result_code': u'Y', u'credit_card_company': u'Visa', u'cvv_result_code': u'M', u'credit_card_number': u'yyy'}

如何对待它以便GBQ将其作为记录消费?

在将对象映射到字符串时,问题似乎很明显 pandas_gbq/gbq.py

type_mapping = {
        'i': 'INTEGER',
        'b': 'BOOLEAN',
        'f': 'FLOAT',
        'O': 'STRING',
        'S': 'STRING',
        'U': 'STRING',
        'M': 'TIMESTAMP'
    }

1 个答案:

答案 0 :(得分:1)

pandas_gbq不支持结构或数组,并且在pandas DataFrame s

中存储dicts或list并不是“pandantic”

如果您使用结构,可以在DataFrame中使用多个列吗?