[英]Python - Appending value to each sublist in list of lists
我有一些长的数据集,我试图用numpy读取,并将一个值附加到每一行,然后输出为CSV。 最终的目标是从同一个文件中拆分多个度量,因此我需要某种方式来标记每个度量。 我想出了这个:
def csv_test(data_file):
data_nd = np.genfromtxt(str(data_file),
delimiter=";",
usecols=(-3, -2, -1),
dtype=None)
data = np.ndarray.tolist(data_nd)
output = []
sub_output = []
sub1 = str(1)
for i in data:
sub_output.append(i)
sub_output.extend(sub1)
output.append(sub_output)
print(output)
x_val = 1
x_string = str(x_val)
filename_out = str("temp_" + x_string + ".csv")
with open(filename_out, "w") as f:
writer = csv.writer(f)
for sublist in output:
writer.writerows(sublist)
问题是我的输出看起来像这样:
[[[0.0, -0.051, -1.525651e-07], '1', ...
而且不喜欢
[[[0.0, -0.051, -1.525651e-07, '1'] ...
因此,在CSV写入步骤中,增加的值会换行。 我如何才能将其追加到列表中的子列表?
样本数据:
0;0.000000;-0.050;-6.900140e-008
0;0.100000;-0.050;-6.843410e-008
0;0.200000;-0.050;-6.778820e-008
0;0.300000;-0.050;-6.654330e-008
0;0.400000;-0.050;-6.598800e-008
0;0.500000;-0.050;-6.497330e-008
0;0.600000;-0.050;-6.415210e-008
0;0.700000;-0.050;-6.349080e-008
0;0.800000;-0.050;-6.181810e-008
0;0.900000;-0.050;-6.148080e-008
0;1.000000;-0.050;-6.032090e-008
问题是您应该将str(1)
附加到i
,而不是sub_output
:
for i in data:
sub_output.append(i + [sub1])
# sub_output.extend(sub1) <-- you don't need this line.
注意,我们没有i.append(sub1)
因为append()
方法返回None
。 您希望将i
的完整列表+ sub1
的单项list
附加到sub_output
。
几点评论:
1)在这里不要使用.extend
,它会分割一个多字符字符串。
2) data
已经是副本,您可以直接使用它,而无需创建新的输出
3)由于data
元素是可变的,因此您所需要做的就是就地更改它们,这就是.append
所做的。 因此, data = data_nd.tolist()
之后的代码可以读取:
for sub_list, new_element in zip(data, stuff_to_append):
sub_list.append(new_element)
这将以您想要的方式修改data
,然后您可以将data
写入文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.