【发布时间】:2018-11-10 00:08:45
【问题描述】:
我有以下格式的列表:
test_data = [[0.09792, 0.04583, 0.01667, 0.05208, 0.02917, 0.0375, 0.03958, 0.11042, 0.03542, 0.01667, 0.13125, 0.01667, 0.01875, 0.04583, 0.1, 0.05833, 0.06042, 0.00625, 0.03333, 0.04792],
[0.0709, 0.04104, 0.0398, 0.06343, 0.02239, 0.03109, 0.07463, 0.04851, 0.01493, 0.05597, 0.11194, 0.0597, 0.04104, 0.03731, 0.02612, 0.0995, 0.05224, 0.00373, 0.02985, 0.07587],
[0.1232, 0.0704, 0.0128, 0.056, 0.024, 0.032, 0.0528, 0.0656, 0.0256, 0.0384, 0.1088, 0.0368, 0.0352, 0.0352, 0.0688, 0.0528, 0.0336, 0.0096, 0.0384, 0.08]
这只是包含更多子列表的完整数据的子集。我使用以下代码将数据写入 csv,如下所示:
import csv
import sys
with open("my_data.csv", "wb") as my_csv:
w = csv.writer(my_csv, sys.stdout)
w.writerow(column_headers)
w.writerows(zip(*test_data))
“column_headers”变量是一个字符串列表,长度为 24 个元素,写为第一行以用作列标识符。它的格式为:
column_headers = ['header_1', 'header_2', ....., 'header_24']
输出的 csv 表如下所示:
header_1, header_2, header_3, ...., header_24
0.0979, 0.0709, 0.1232, ...., 0.0688
0.0458, 0.0410, 0.0704, ...., 0.0527
0.0166, 0.0398, 0.0128, ...., 0.0389
我想添加一个字符串列表作为新的第一列,它将表示行 id,因此表格格式如下:
row_id = ['row_id', 'a', 'b', 'c'...., 'k']
row_id, header_1, header_2, header_3, ...., header_24
a 0.0979, 0.0709, 0.1232, ...., 0.0688
b 0.0458, 0.0410, 0.0704, ...., 0.0527
c 0.0166, 0.0398, 0.0128, ...., 0.0389
我使用以下代码来做到这一点:
for ind, line in enumerate(fileinput.input("my_data.csv", inplace = True)):
sys.stdout.write("{},{}\n".format(line.rstrip(), row_id[ind]))
不幸的是,数据以不同的格式出现。字符串列表位于最后一列。它看起来像这样:
header_1, header_2, header_3, ...., header_24, row_id
0.0979, 0.0709, 0.1232, ...., 0.0688, a
0.0458, 0.0410, 0.0704, ...., 0.0527, b
0.0166, 0.0398, 0.0128, ...., 0.0389, c
如何调整上面的代码以根据需要将 row_id 放在第一列?
感谢您的宝贵时间
【问题讨论】:
-
你试过这个
sys.stdout.write("{},{}\n".format(row_id[ind], line.rstrip()) -
@risabh.bhardwaj 就这么简单。谢谢!
-
@rishabh.bhardwaj,你介意发布你的答案,即使它很简单。我想对你的回应投赞成票。再次感谢
标签: python-2.7 list csv