我來自Excel背景,但我愛熊貓,它確實讓我更有效率。不幸的是,我可能會從Excel中帶走一些不良習慣。我有三個大文件(每個在兩百萬到一千三百萬行之間),其中包含有關可能綁定在一起的交互的數據,遺憾的是,沒有用於連接文件的唯一鍵。我從字面上將(Excel公式)3個字段拼接成所有三個文件中的一個新列。加入熊貓檔案
這三列存在於每個文件中,我將它們組合在一起(其他字段將像是一個文件上的交互原因,另一個文件上的分數以及第三個文件上的一些其他數據,我希望一起回綁到一定AGENTID):
Date | CustomerID | AgentID
修改我的日期格式是對每個文件統一:
df[Date] = pd.to_datetime(df['Date'], coerce = True)
df[Date] = df[Date].apply(lambda x:x.date().strftime('%Y-%m-%d'))
然後,我創建一個唯一的列(當然,獨一無二的,因爲我可以得到它有時候是同一個客戶與同一個代理進行交互在同一天,但這應該是相當少見):
df[Unique] = df[Date].astype(str) + df[CustomerID].astype(str) + df[AgentID].astype(str)
我做DF2,然後同樣的步驟:
combined = pd.merge(df, df2, how = 'left', on = 'Unique')
我通常發送到一個新的CSV在萬一死機,gzip的它,然後再次讀取,並再次使用第三個文件執行相同的過程。
final = pd.merge(combined, df2, how = 'left', on = 'Unique')
正如你所看到的,這需要時間。我必須格式化每個日期,然後將它們轉換爲文本,創建一個添加到文件大小的對象列,以及(由於原始數據問題本身)刪除重複項,所以我不會意外膨脹數字。我有沒有更高效的工作流程?
太棒了。工作。非常感謝。我回去編輯了所有的加入文件。 – trench