簡體   English   中英

Python-將值附加到列表列表中的每個子列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM