[英]shuffle rows of csv with python
我想簡單地改組csv文件的行,但保持標頭為靜態。
unshuffled.csv的內容
Lastname Firstname Age
taylor bob 40
mcdonald kevin 32
smith john 18
想要輸出到shuffled.csv如下
Lastname Firstname Age
smith john 18
mcdonald kevin 32
taylor bob 40
我正在使用下面的代碼,這是另一篇文章中建議的,但對我不起作用。
from random import shuffle
with open('unshuffled.csv','r') as ip:
data=ip.readlines()
header, rest=data[0], data[1:]
shuffle(rest)
with open('shuffled.csv','w') as out:
out.write(''.join([header]+rest))
但是,輸出csv會按如下所示在三列之外對數據進行混洗。
Lastname Firstname Age
smith john 18 32 kevin
taylor bob 40
我如何才能使列為靜態,而只是將csv文件中的行洗牌。
您必須在unshuffled.csv
的最后一行上缺少換行符,因此請使用以下命令:
import random
with open('unshuffled.csv', 'r') as r, open('shuffled.csv', 'w') as w:
data = r.readlines()
header, rows = data[0], data[1:]
random.shuffle(rows)
rows = '\n'.join([row.strip() for row in rows])
w.write(header + rows)
嘗試這樣的事情:
from random import shuffle
with open('unshuffled.csv') as ip:
lines=ip.readlines()
header = lines.pop(0)
shuffle(lines)
lines.insert(0, header)
with open('shuffled.csv','w') as out:
out.writelines(lines)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.