Python 将数据类型转换为BigQuery类型表示

Python 将数据类型转换为BigQuery类型表示,python,numpy,pandas,google-bigquery,Python,Numpy,Pandas,Google Bigquery,我刚刚安装了pandas和numpy,对它们没有任何经验。我试图得到一个json数据结构,类似于您需要传递给GoogleBigQuery的内容 球门 确定数据类型 返回JSON,其中key是列名,value是数据类型之一:STRING、INTEGER、FLOAT、BOOLEAN、TIMESTAMP或RECORD 我试过的 后果 正如你所看到的,我得到了正确的结果。但我不喜欢我这样做。我觉得有一种更简单的方法 我想改进什么 map_dtype函数,如您所见,我必须手动映射BigQuery中有字符串

我刚刚安装了pandas和numpy,对它们没有任何经验。我试图得到一个json数据结构,类似于您需要传递给GoogleBigQuery的内容

球门 确定数据类型 返回JSON,其中key是列名,value是数据类型之一:STRING、INTEGER、FLOAT、BOOLEAN、TIMESTAMP或RECORD 我试过的 后果 正如你所看到的,我得到了正确的结果。但我不喜欢我这样做。我觉得有一种更简单的方法

我想改进什么 map_dtype函数,如您所见,我必须手动映射BigQuery中有字符串表示的数据类型 对于每个循环,感觉应该有一种更简单的方法来获取分配给列的数据类型。
好消息!从0.13版开始,熊猫官方和实验性地支持Google BigQuery

选中read_gbq,尤其是to_gbq以将数据放入BigQuery:

视频和示例笔记本的链接如下:


谢谢皮尔森

好消息!从0.13版开始,熊猫官方和实验性地支持Google BigQuery

选中read_gbq,尤其是to_gbq以将数据放入BigQuery:

视频和示例笔记本的链接如下:


谢谢皮尔森

我不确定pandas.io.gbq中的方法是否对您有多大帮助。如果我理解正确,您有一个CSV文件,您正在尝试将数据类型映射到BigQuery类型。据我所知,在处理pandas.io.gbq时,并没有一种真正方便的方法

有关numpy类型的有用列表,请参见:

基本类型字符代码为:

整数后面的t位字段给出位字段中的位数。 b布尔整数类型,其中所有值仅为True或False i整数 无符号整数 f浮点 c复数浮点 O对象,即内存包含指向PyObject的指针 字符的S字符串固定长度序列 Py_-Unicode的U-Unicode固定长度序列 V Other void*–每个项都是固定大小的内存块 在这种情况下,我觉得字典是查找的最佳选择,您可以用列表理解替换for循环:

df = DataFrame({'a' : [1,2], 'b' : [True, False], 'c' : [1.1, 2.1], 'd' : ['a', 'b']})
type_dict = {
    'b' : 'BOOLEAN',
    'i' : 'INTEGER',
    'f' : 'FLOAT',
    'O' : 'STRING',
    'S' : 'STRING',
    'U' : 'STRING'
}
[{'name' : col_name, 'type' : type_dict.get(col_type.kind, 'STRING')} for (col_name, col_type) in df.dtypes.iteritems()]
收益率:

[{'type': 'INTEGER', 'name': 'a'}, {'type': 'BOOLEAN', 'name': 'b'}, {'type': 'FLOAT', 'name': 'c'}, {'type': 'STRING', 'name': 'd'}]

在这种情况下,我在dict中显式地引用了'O'、'S'和'U'。您可以用多种方式处理这个问题。显然,需要注意“O”的情况,因为它可能没有有用的字符串表示形式。同样,由于我使用.get方法,我假设不受支持类型的字符串表示形式比没有好。这可能不是您的情况,或者您可能希望避免可能的类型强制转换,因此最好直接将该值作为type_dict[col_type]查找,并根据具体情况处理异常。

我不确定pandas.io.gbq中的方法是否会对您有很大帮助。如果我理解正确,您有一个CSV文件,您正在尝试将数据类型映射到BigQuery类型。据我所知,在处理pandas.io.gbq时,并没有一种真正方便的方法

有关numpy类型的有用列表,请参见:

基本类型字符代码为:

整数后面的t位字段给出位字段中的位数。 b布尔整数类型,其中所有值仅为True或False i整数 无符号整数 f浮点 c复数浮点 O对象,即内存包含指向PyObject的指针 字符的S字符串固定长度序列 Py_-Unicode的U-Unicode固定长度序列 V Other void*–每个项都是固定大小的内存块 在这种情况下,我觉得字典是查找的最佳选择,您可以用列表理解替换for循环:

df = DataFrame({'a' : [1,2], 'b' : [True, False], 'c' : [1.1, 2.1], 'd' : ['a', 'b']})
type_dict = {
    'b' : 'BOOLEAN',
    'i' : 'INTEGER',
    'f' : 'FLOAT',
    'O' : 'STRING',
    'S' : 'STRING',
    'U' : 'STRING'
}
[{'name' : col_name, 'type' : type_dict.get(col_type.kind, 'STRING')} for (col_name, col_type) in df.dtypes.iteritems()]
收益率:

[{'type': 'INTEGER', 'name': 'a'}, {'type': 'BOOLEAN', 'name': 'b'}, {'type': 'FLOAT', 'name': 'c'}, {'type': 'STRING', 'name': 'd'}]

在这种情况下,我在dict中显式地引用了'O'、'S'和'U'。您可以用多种方式处理这个问题。显然,需要注意“O”的情况,因为它可能没有有用的字符串表示形式。同样,由于我使用.get方法,我假设不受支持类型的字符串表示形式比没有好。这可能不是您的情况,或者您可能希望避免可能的类型强制转换,因此最好直接将值查找为type_dict[col_type],并根据具体情况处理异常。

我看到了这些函数,但问题是我不想将数据发送到BigQuery,我只需要JSON格式的输出,使用相同的数据类型我看到了这些函数,但问题是我不想将数据发送到BigQuery,我只需要一个JSON格式的输出,使用相同的数据类型非常感谢,它帮助了很多!非常感谢,它帮了很多忙!