0
我將堆疊到以下任務中:合併特定掩碼下的所有文件,並根據兩個條件刪除重複項:如果name
和TEXT
相同,則保留具有最大第四列。解決方案:python中的許多csv文件的雙重條件過濾
我目前有這個沒有很好測試的代碼(基於我以前的問題),但因爲它使用字典,所以它重寫了以前具有相同名稱但不同TEXT的數據。我試圖只使用列表。
如何在兩種情況下同時進行過濾?
非常感謝您的幫助。
import glob,csv
files = glob.glob("*.txt")
fo = open("combined.csv","a")
writer = csv.writer(fo,delimiter=' ')
datum = []
nyt = set()
for f in files:
with open(f) as fi:
for row in csv.reader(fi,delimiter=' '):
crow = row[0],row[4]
nyt.add(crow)
if crow in nyt:
dupl = [element for element in datum if element[0] == row[0]]
if dupl[0][3] < row[3]:
# replace row in datum with row
if dupl[0][3] > row[3]:
continue
else:
datum.append(row)
例子
file1
name1 0.06 0.91 0.17 TEXT1 smthing smthing
name2 0.46 0.42 0.02 TEXT1 smthing smthing
name3 0.15 0.80 0.61 TEXT1 smthing smthing
file2
name1 0.68 0.38 0.61 TEXT2 smthing smthing
name2 0.73 0.62 0.03 TEXT2 smthing smthing
name3 0.84 0.81 0.60 TEXT2 smthing smthing
file3
name1 0.86 0.18 0.03 TEXT1 smthing smthing
name2 0.04 0.12 0.75 TEXT1 smthing smthing
name3 0.59 0.70 0.71 TEXT1 smthing smthing
關於'唯一的密鑰相結合,如果烏鴉nyt':在此之上的一行中,您將'crow'添加到'nyt',因此它總是包含在其中。要替換列表中的項目,您需要它的索引,因此請閱讀列表類型的索引,因此請閱讀列表類型的'index'-method –
我將這些值合併爲一個唯一鍵 –
@JohnAmraph請記住在您允許時接受您自己的答案。 – tacaswell