我有以下格式的列表列表:
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放在第一列中?
感谢您的时间
答案 0 :(得分:0)
它只是交换2个参数的顺序!感谢@ rishabh.bhardwaj在我的原始帖子的评论中。见下文:
for ind, line in enumerate(fileinput.input("my_data.csv", inplace = True)):
sys.stdout.write("{},{}\n".format(row_id[ind], line.rstrip())
答案 1 :(得分:0)
尝试一下:
for ind, line in enumerate(fileinput.input("my_data.csv", inplace = True)):
sys.stdout.write(f"{row_id[ind]},{line.rstrip()}\n")
答案 2 :(得分:0)
sys.stdout.write("{},{}\n".format(row_id[ind], line.rstrip())