我有一个数据框想要上传到 BigQuery。数据框有 5 列,具有以下类型,如下所示:
name object
type object
population int32
geometry geometry
geojson object
dtype: object
name
是字符串形式的区域名称,type
是其类型(省、城市等)也是字符串。 population
是地区人口。 geometry
是一个形状优美的多边形,最后,geojson
是使用 df['geojson'] = df['geometry'].apply(lambda x: json.dumps(shapely.geometry.mapping(x)))
转换为 geojson 的多边形
确切的错误显示为
pandas_gbq.gbq.GenericGBQException: Reason: 400 Error while reading data, error message: CSV processing encountered too many errors, giving up. Rows: 855402; errors: 8; max bad: 0; error percent: 0
,因此看起来第 855402 行是有问题的行。
我做的第一件事是检查该行是否具有相同的数据类型,确实如此
>>> df.iloc[855402:855403].dtypes
name object
type object
population int32
geometry geometry
geojson object
dtype: object
我还检查了几何文件是否有效并且也是
>>> df.iloc[855402]['geometry'].is_valid
True
我需要做什么才能将此数据帧上传到 BigQuery?
正如@user16164298提到的,怀疑某些值中含有逗号。因此,当 BigQuery 解析 CSV 时,它会将逗号视为分隔符,并且列数将为奇数。您可以参阅 BigQuery 文档了解更多详细信息。
将答案发布为社区 wiki,以造福于将来可能遇到此用例的社区。
请随意编辑此答案以获取更多信息。