1

我有一个大的 csv 文件,其中一列包含作为浮点元组的 gps 坐标列表。当然,如果我将文件作为 pandas 数据框读取,它们的类型只是字符串,这不是那么有用。

我想要做的是将字符串转换为浮点元组列表并将它们保存为一种我可以简单地加载到数据框并运行查询的格式。对此的重要限制是,我无法为整个大数据集计算此转换,因此无法转储二进制对象。

从我读到的,似乎 HDF 存储应该能够以所需的格式保存数据并允许我附加行,所以我可以将字符串逐位转换为 GPS 条目,从而不会出现我的记忆问题限制。

但是,当我尝试创建 HDF 文件时,我得到:

TypeError: Cannot serialize the column [POLYLINE] because
its data contents are [mixed] object dtype

产生此错误的代码是:

df.to_hdf(filename, 'data', mode='w', format='table')

df 包含原始数据的切片,在 POLYLINE 列上映射转换函数后,这至少应该意味着该列中的所有数据具有相同的类型。

我该如何解决生成的错误或有哪些其他方法可以很好地工作?

编辑:转换前的 df.head() 导致:

TRIP_ID CALL_TYPE  ORIGIN_CALL  ORIGIN_STAND   TAXI_ID  \
0  1372636858620000589         C          NaN           NaN  20000589   
1  1372637303620000596         B          NaN             7  20000596   
2  1372636951620000320         C          NaN           NaN  20000320   
3  1372636854620000520         C          NaN           NaN  20000520   
4  1372637091620000337         C          NaN           NaN  20000337   

    TIMESTAMP DAY_TYPE MISSING_DATA  \
0  1372636858        A        False   
1  1372637303        A        False   
2  1372636951        A        False   
3  1372636854        A        False   
4  1372637091        A        False   

                                        POLYLINE  
0  [[-8.618643, 41.141412], [-8.618499, 41.141376...  
1  [[-8.639847, 41.159825999999995], [-8.64035099...  
2  [[-8.612964, 41.140359000000004], [-8.613378, ...  
3  [[-8.574678, 41.151951], [-8.574705, 41.151942...  
4  [[-8.645994, 41.18049], [-8.645949, 41.180517]...  

并在转换 POLYLINE 列之后(省略其他列以节省空间):

                                            POLYLINE  
0  [[-8.618643, 41.141412], [-8.618499, 41.141376...  
1  [[-8.639847, 41.159826], [-8.640351, 41.159871...  
2  [[-8.612964, 41.140359], [-8.613378, 41.14035]...  
3  [[-8.574678, 41.151951], [-8.574705, 41.151942...  
4  [[-8.645994, 41.18049], [-8.645949, 41.180517]...  

我现在对其进行了更改,因此结果输出也是列表列表而不是元组列表。检查其中的单个元素表明转换之前的条目是一个字符串,内部列表中的单个项目是一个浮点数,应该是这样,尽管它的打印方式并没有说明这一点。

4

0 回答 0