python csv子组合列

时间:2018-04-26 17:45:54

标签: python

我有这样的csv文件:

F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,label

a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,L1

b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,L2

我希望将列组合到文件中,如下所示:

- 对于带有标签的列组合,并将预期结果写入:

文件1:

F1,label

a1,L1

b1,L2

file2的:

F2,label

a2,L1

b2,L2

,直到

file10:

F10,label

a10,L1

b10,L2

- 对于带有标签的2列组合,并将预期结果写入:

2C_file1:

F1,F2,label

a1,a2,L1

b1,b2,L2

2C_file2:

F1,F3,label

a1,a3,L1

b1,b3,L2

,直到

45C_file45:

F9,F10,label

a9,a10,L1

b9,b10,L2

- 对于带有标签的3列组合并写入120个文件:

..... .....直到

- 对于带有标签的9列组合并写入10个文件:

- 对于带有标签的10列组合并写入1个文件:

我搜索过,我发现了一个用于与itertool进行字符串组合的python代码。 我怎么能用python代码存档上面的任务?

import itertools as iters

text='ABCDEFGHIJ'

C1= iters.combinations(text,1)

print list(C1)

C2= iters.combinations(text,2)

print list(C2)
.....
C9= iters.combinations(text,9)

print list(C9)

C10=iters.combinations(text,10)

print list(10)

1 个答案:

答案 0 :(得分:0)

这个循环结构应该能够创建你想要的结构。必须将其更改为写入文件。这里生成的序列的长度或生成的输出的位置是您要打印到文件中的相同结构的一部分:

#!/usr/bin/env python

row1 = ["F{i}".format(i=i) for i in range(1,11)]
row1.append("label")

row2 = ["a{i}".format(i=i) for i in range(1,11)]
row2.append("L1")

row3 = ["b{i}".format(i=i) for i in range(1,11)]
row3.append("L2")

for SequenceLength in range(1, len(row1)):
    for SequencePositionStart in range(len(row1)):
        if row1[SequencePositionStart:SequenceLength] == []:
            continue
        print(','.join(row1[SequencePositionStart:SequenceLength]), row1[-1], sep=",")
        print(','.join(row2[SequencePositionStart:SequenceLength]), row2[-1], sep=",")
        print(','.join(row3[SequencePositionStart:SequenceLength]), row3[-1], sep=",")