HDF Store:将float-tuples列表保存到文件

时间:2015-05-23 15:57:13

标签: python pandas gps hdfstore hdf

我有一个很大的csv文件,其中一列包含gps坐标列表作为float-tuples。当然,如果我将文件作为pandas数据帧读入,它们的类型就是String,这没什么用处。

我想要做的是将字符串转换为float-tuples列表,并将其保存为一种格式,我可以将其加载到数据帧中并运行查询。对此的重要限制是,我无法为整个大数据集计算此转换,因此转储二进制对象是不可取的。

根据我的阅读,似乎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]...  

我现在已经更改了它,因此生成的输出也是列表而不是元组列表。检查这些元素中的单个元素表明转换前的条目是一个字符串,内部列表中的单个项目应该是浮点数,尽管它的打印方式并不清楚

0 个答案:

没有答案