我有一个来自LiDAR传感器的csv数据文件,看起来像这样,但是还有几十亿行:
scan_0,scan_1,scan_2
timestamp_0,timestamp_1,timestamp_2
7900200,7900225,7900250
logTime_0,logTime_1,logTime_2
27:46.8,27:46.8,27:46.8
distance_0,distance_0,distance_0
132,141,139
136,141,155
139,141,155
138,143,155
138,143,142
139,143,136
138,143,136
这是来自平面传感器的数据。因此,Scan_0是时间戳上特定扫描的列表或“径向”坐标。
我的计划是:
将扫描数组的每个元素转换为xyz格式,如下例所示。
scan_0 -----> scan_0
timestamp_0-> timestamp_0
7900200-----> 7900200
logTime_0---> logTime_0
27:46.8-----> 27:46.8
distance_0--> distance_0
132---------> [132*cos(1),132*sin(1),7900200]
136---------> [136*cos(2),136*sin(2),7900200]
139---------> [139*cos(3),139*sin(3),7900200]
138---------> . .
138---------> . .
139---------> . .
138---------> [138*cos(7),139*sin(7),7900200]
将xyz坐标数组写入一个新的csv文件,每行一个坐标'
最终使用轨迹而不是时间戳来表示来自另一个csv文件的z坐标。
我告诉你所有这些,所以你对我的动机有一些背景。为了开始这个小项目,我决定简单地尝试将csv文件读入列表并将每行输出到另一个csv文件...从小开始吧?
这是我到目前为止所做的:
import csv
with open("2016_09_16_14_29_09_953.csv", 'r') as f:
with open("out.csv", "a") as f1:
x = csv.reader(f)
my_list = list(x)
thedatawriter = csv.writer(f1)
for row in my_list:
thedatawriter.write(row)
这会创建一个空的csv文件。我在这做错了什么?我觉得自己像蚂蚁攀登珠穆朗玛峰。非常感谢任何帮助,建议和指导。
答案 0 :(得分:1)
我不确定为什么这不会让你感到沮丧。 csv.writer对象没有写入功能。请尝试使用数据写法。(行)。
答案 1 :(得分:1)
运行代码时,出现以下错误:
AttributeError: '_csv.writer' object has no attribute 'write'
您确定没有收到同样的错误吗?因为基于the documentation of csv,该方法似乎是writerow
而不是write
。
所以,像Rob Davis似乎已经回答了thedatawriter.writerow(row)