在 'for' 函数中枚举

Enumerate in 'for' function

我想在每个 .tsv 文件中添加一个名为 X 的列。我希望此列具有 folder_names 列表中相应索引的值(每个 .tsv 文件的 folder_names 的一个值)。但是 enumerate 函数在 for loop 的每次迭代中重复自身,所以列 'X' 总是得到 names 的最后一个值而不是相应的值。

我得到了这两个列表:

all_files_tsv = [tsv_file_1, tsv_file_2.... tsv_file_n]

folder_names = [folder_name_1, folder_name_2.... folder_name_n]

所需的输出如下:

tsv_file_1:

Column1 Column2 X
1 A folder_name_1
2 B folder_name_1
3 C folder_name_1

tsv_file_2:

Column1 Column2 X
1 --- folder_name_2
2 --- folder_name_2
3 --- folder_name_2

这是我现在拥有的代码:

for file_ in all_files_tsv:
    df = pd.read_csv(file_,sep = '\t', header=0)
    for index, names in enumerate(folder_names):
        df['X'] = names

知道如何解决这个问题吗?

您不需要 enumerate()。您可以使用 zip() 并行迭代 all_files_tsvfolder_names 以获取相应的元素。

for file, name in zip(all_files_tsv, folder_names):
    df = pd.read_csv(file, sep='\t', header=0)
    df['X'] = name
    df.to_csv(file, sep='\t', header=0)

嵌套循环用于两个列表之间的叉积,zip()用于配对对应的元素。