การวางคอลัมน์หนึ่งคอลัมน์ของไฟล์ CSV โดยใช้ไฟล์ CSV ที่มีขนาดใหญ่มาก
ฉันมีโฟลเดอร์ 300GB ในขนาดที่มีขนาดใหญ่ (ประมาณ 2GB) CSVไฟล์ งานของฉันคือแยกแถวจากแฟ้มที่มีค่าในคอลัมน์เฉพาะที่มีอยู่ในไฟล์อินพุตที่ฉันมี (ขนาด 2GB เช่นกัน) ขณะนี้ฉันกำลังพยายามใช้pythonวิธีการแบบพื้นฐานโดยใช้Pandasเพื่อรับข้อมูลที่ฉันต้องการ แต่กระบวนการนี้ช้ามากและเนื่องจากข้อ จำกัด ฉันต้องอ่านทั้งไฟล์อินพุตและไฟล์แต่ละไฟล์ในโฟลเดอร์เป็น chunks ซึ่งกำลังดำเนินการอยู่ ซักพักนึง: all_wow_files = glob.glob('/media/noname365/0205D5FE310DDEEC/bing_verticals_wow_job/US_WOW/*_Keywords.csv') for file in all_wow_files: print(file) for chunk in pd.read_csv(file, chunksize=500000): for chunk_dupe in pd.read_csv('input_file.csv',chunksize=500000, names=['Keyword']): keyword_list = set(chunk_dupe['Keyword'].tolist()) chunk = chunk[chunk['Keyword'].isin(keyword_list)] chunk.to_csv(output_file,index=False, mode='a') มีคำสั่งเฉพาะในbashฉันที่สามารถใช้เพื่อให้งานเสร็จเร็วขึ้นหรือไม่? ฉันไม่ต้องการอ่านไฟล์อินพุตทั้งหมดลงในหน่วยความจำเพื่อประโยชน์ของการเปรียบเทียบ ... แก้ไข: โดยทั่วไปไฟล์ในโฟลเดอร์จะถูกสร้างขึ้นเช่นนี้ในผลลัพธ์ของฉันฉันต้องการคอลัมน์ทั้งหมดที่รวมอยู่: Parent ID, …