[英]csv file gives strings when writing in floats
我的csv
文件如下所示:
"(-0.16192019, -0.007456851, 0.08841695)","(-0.10439591, 0.024501082, 0.12783173)","(-0.05965481, 0.049002163, 0.12144014)",...
但我不要引号
我写的功能为:
for j in range(len(sensor_data)):
with open(names[j] + "P" + str(i) + ".csv", "wb") as f:
writer = csv.writer(f)
writer.writerows(sensor_data[j])
我的sensor_data[j]
像这样:
gyro.append((float(merge.iloc[j, 2]), float(merge.iloc[j, 3]), float(merge.iloc[j, 4]))) if merge.iloc[j, 0] == 'Gyroscope' \
else acc.append((float(merge.iloc[j, 2]), float(merge.iloc[j, 3]), float(merge.iloc[j, 4])))
为什么不打印浮点元组而不是字符串元组?
merge = pd.read_csv(final_user_study_path + "/P" + str(i) + "/DataCollection/data/merge.csv")
合并看起来像:
Gyroscope,50958,-0.3387541,0.014913702,0.05965481
Gyroscope,50978,-0.23009712,0.03621899,0.044741105
LinearAcceleration,50979,-0.09891046,0.119261175,-0.108936176
Gyroscope,50998,-0.1768339,0.066046394,0.040480047
LinearAcceleration,50999,-0.0863409,0.18240824,-0.07152677
所有这些值的类型都是字符串。
我想要:
(-0.16192019, -0.007456851, 0.08841695),(-0.10439591, 0.024501082, 0.12783173),(-0.05965481, 0.049002163, 0.12144014),...
若要停止csv.writer()
在需要时添加引号(因为它在单元格中发现了定界符),请添加quoting
参数,如下所示:
writer = csv.writer(f, quoting=csv.QUOTE_NONE)
请参阅CSV文档: csv.QUOTE_NONE
但是,最好拆开元组的包装,以便它们各自正确地获得自己的单元格而没有任何多余的括号。 这可以使用itertools.chain.from_iterable()
,将所有元组折叠到一个列表中。 例如:
from itertools import chain
row = [(-0.16192019, -0.007456851, 0.08841695), (-0.10439591, 0.024501082, 0.12783173), (-0.05965481, 0.049002163, 0.12144014)]
print row
print list(chain.from_iterable(row))
这将显示:
[(-0.16192019, -0.007456851, 0.08841695), (-0.10439591, 0.024501082, 0.12783173), (-0.05965481, 0.049002163, 0.12144014)]
[-0.16192019, -0.007456851, 0.08841695, -0.10439591, 0.024501082, 0.12783173, -0.05965481, 0.049002163, 0.12144014]
如您所见,第二行显示所有元组均已展平为一个列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.