这是我在 StackOverflow 上的第一个问题,因此始终欢迎有关如何使问题更清晰的建议。
我有一个点数据的 CSV,其结构如下所示:
OBJECTID,CART_ID,SHAPE
1,ABC,"(1.2, -4.5)"
2,ABD,"(3.8, 9.1)"
使用 python 3.5 中的 petl 模块,我试图将 SHAPE 字符串转换为两个单独的浮点对象列。使用我从petl文档中了解到的内容,我应该可以分三个步骤完成。
- 打开 CSV:
a = petl.fromcsv('file.csv')
- 将 SHAPE 从字符串转换为元组:
b = petl.convert(a, 'SHAPE', tuple)
- 使用 .unpack() 将元组分成两列:
c = petl.unpack(b, 'SHAPE', ['LAT', 'LON']
我相信这会产生一个如下所示的 CSV 文件:
OBJECTID,CART_ID,LAT,LON
1,ABC,1.2,-4.5
2,ABD,3.8,9.1
相反, .convert() 产生:
OBJECTID,CART_ID,SHAPE
1,ABC,('(', '1', '.', '2', ',', ' ', '-', '4', '.', '5', ')')
任何有关 a) .convert() 正在做什么或 b) 如何重组 CSV 的帮助将不胜感激。
谢谢你。
完整代码:
import petl
a = petl.fromcsv('file.csv')
petl.look(a)
b = petl.convert(a, 'SHAPE', tuple)
petl.look(b)
c = petl.unpack(b, 'SHAPE', ['LAT', 'LON']
petl.look(c)