2017-07-10 22 views
0

我有一個csv文件,其中第一行有列名。我只想洗牌除了第一行(A1)以外的列名。在Python中的CSV中第一行的移動列

我的CSV樣子:

"name","A","B","C","D" 
"Romi", 5, 6, 3, 6 
"Meli", 5, 8, 9, 7 
"John", 3, 6, 8, 9 

而且我希望它是這樣的:

"name","C","A","D","B" 
"Romi", 5, 6, 3, 6 
"Meli", 5, 8, 9, 7 
"John", 3, 6, 8, 9 

這是我的代碼:

infile = open('data.csv', 'r') 

table = [] 

for row in csv.reader(infile, delimiter = ','): 
    table.append(row) 
infile.close() 


table_one = ' '.join(table[0]) 
table_one = table_one.split(' ') 
table_one = table_one[1:10] 
for i in range(1,11): 
    random.shuffle(table_one) 
    table[0] = table_one 
    print table[0] 

在打印它像這樣:

"C","A","D","B" 
"Romi", 5, 6, 3, 6 
"Meli", 5, 8, 9, 7 
"John", 3, 6, 8, 9 

我正在使用python 3.0。

回答

0

這裏,我已經解決了它

table_one = table[0][2:] 
for i in range(1,11): 
    random.shuffle(table_one) 
    table[0][2:] = table_one 
    print table[0] 
0
import csv 
infile = open('S228c_foldvalues_modified.csv', 'r') 

table = [] 

for row in csv.reader(infile, delimiter = ','): 
    table.append(row) 
infile.close() 


table_one = table[0] 
table_one[1], table_one[2], table_one[3], table_one[4] = 
table_one[3], table_one[1], table_one[4], table_one[2] 
table[0] = table_one 

print(table) 

with open('outfile.csv', 'w') as f: 
    writer = csv.writer(f) 
    writer.writerows(table) 

只交換列表中的第一行項目並寫回到file.Hope這有助於。

+0

我認爲問題是關於洗牌,沒有結束交換,更其任何地方提到,他只有四列。 –

0
table = [] 
with open('S228c_foldvalues_modified.csv', 'r') as infile: 
    for row in csv.reader(infile, delimiter = ','): 
     table.append(row) 

table_one = table[0][1:] 
random.shuffle(table_one) 
table_one = [table[0][0]]+table_one 
print (table_one) 
+0

謝謝Amey。但是這在循環中不起作用。它在下一個循環中打印「名稱」兩次,等等........ –

+0

爲什麼你需要保持循環?在你的代碼中,你將同一個數組'table_one'洗牌10次,並且每次在'table [0]'中覆蓋它。因此我刪除了循環 –

相關問題