我有一個python腳本來合併具有相同格式的數據文件,僅刪除重複的標題,在每三行之間添加兩個新的空行,第一個實例是要包含的前四行頭。使用Python腳本對樣本ID進行排序
import glob
read_files = glob.glob("*.txt")
header_saved = False
linecnt=0
with open("merged_data.txt", "wb") as outfile:
for f in read_files:
with open(f, "rb") as infile:
header = next(infile)
if not header_saved:
outfile.write(header)
header_saved = True
for line in infile:
outfile.write(line)
linecnt=linecnt+1
if (linecnt%3)==0:
outfile.write("\n\n")
示例輸入文件文本(infile中1):
Specimen_ID Measured_by_initals Measure_date Sex Beak_length Pronotal_width Right_fore_femur_length Right_fore_femur_width Left_fore_femur_length Left_fore_femur_width Right_hind_femur_length Right_hind_femur_width Left_hind_femur_length Left_hind_femur_width Right_hind_femur_area Left_hind_femur_area Right_hind_tibia_width Left_hind_tibia_width Notes
a 1 30-Dec-16 M 4 4 4 4 4 4 4 4 4 4 4 4 4 4
b 1 30-Dec-16 F 4 4 4 4 4 4 4 4 4 4 4 4 4 4 beak bent
c 1 30-Dec-16 M 4 4 4 4 4 4 4 4 4 4 4 4 4 4
d 1 30-Dec-16 F 4 4 4 4 4 4 4 4 4 4 4 4 4 4
e 1 30-Dec-16 F 4 4 4 4 4 4 4 4 4 4 4 4 4 4 pronotum deformed
f 1 30-Dec-16 F 4 4 4 4 4 4 4 4 4 4 4 4 4 4
示例輸入文件文本(infile中2):
Specimen_ID Measured_by_initals Measure_date Sex Beak_length Pronotal_width Right_fore_femur_length Right_fore_femur_width Left_fore_femur_length Left_fore_femur_width Right_hind_femur_length Right_hind_femur_width Left_hind_femur_length Left_hind_femur_width Right_hind_femur_area Left_hind_femur_area Right_hind_tibia_width Left_hind_tibia_width Notes
a 2 30-Dec-16 M 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1
b 2 30-Dec-16 F 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1
c 2 30-Dec-16 M 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1
d 2 30-Dec-16 F 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1
e 2 30-Dec-16 F 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1
f 2 30-Dec-16 F 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1 4.1
現在我想修改腳本,以便它將按Specimen_ID
對輸出進行排序,同時保持每三行之間有兩個空行(即每個唯一的Specimen_ID
後應該有兩個空行)。任何關於排序行的建議?我在排序多維數據或python列表時看到很多,但在2D表格上沒有太多。
此外,我遇到了一些奇怪的行爲,如果我將數據從Excel導出到製表符分隔的txt文件中,此腳本將只會導致包含第一個infile的內容但不包含其他內容的輸出。但是,如果我將來自本網站的示例數據複製並粘貼到txt文件中,並將它們用作infiles,那麼我沒有任何問題。有誰知道我爲什麼遇到這個問題?
你需要使用python標準庫嗎?通常當人們使用表格數據時,他們使用[pandas](http://pandas.pydata.org/)。你要求的東西並不難,使用純python(只需使用'sorted'和一個自定義的'key'參數),但它可能會更快更清晰的熊貓。 – Paul
python是熊貓模塊嗎? –
熊貓是一個python庫,你可以點擊鏈接。你用'pip install pandas'安裝它。當試圖看看如何做到這一點時,我意識到你的文本輸入格式有點模糊。看起來你使用的是空格分隔的表格輸入格式,但是在條目中有空白的空白,並且當缺少值時數據似乎沒有排隊 - 就像「彎曲的喙」似乎是在「Right_fore_femur_length」下,而不是「註釋」。如果可能的話,可能更好地將這些輸入生成爲csv。 – Paul