将数据加载到 BigQuery 时忽略空值

ignore null values when loading data into BigQuery

我正在将数据加载到 bigquery 中,当我从 csv 上传数据时,数据应该是有序的,但是一旦加载,它就会在 bigquery 中打乱顺序,如下所示,

actual table:这应该是 bigquery

id name location
1 aaa bbbb
2 ccc dddd
3 eeee
4 fff gggg

已上传table:但在我从 csv 上传到 bigquery

后,它以下面的格式更新了
id name location
3 null eeee
2 ccc dddd
1 aaa bbbb
4 fff gggg

即使我使用 pandas.sort_values(by='id'),我也没有按正确的顺序得到 table,它被重新洗牌,不知道基于什么。

如何 changes/steps 将实际的 table 上传到 bigquery 中,因为它采用相同的格式并在将数据加载到 bigquery 中时忽略空值?

提前致谢

BigQuery 的一个非常重要的方面是

If an ORDER BY clause is not present, the order of the results of a query is not defined (ref here)

如果你想按你的意愿显示行,只需添加一个ORDER BY子句:

ORDER BY `id`

至于忽略 NaN 值,只需在使用 to_gbq 之前用 .notna() 过滤数据框。

补充Cylldby答案。如果您仍然需要该原始订单,您只需添加一个名为 index 的列并将数据框中的 index 数据填充到您的 table (或工作温度 table )

df['index_col'] = df.index

注意:如果有多个文件,您还可以设置数据帧块的自定义索引。有关更多信息,请参阅 探索索引重新排序。

因此,在您的 BigQuery table 上,您可以按 index_col 进行排序并保留从您的文件上传的原始订单。