큰 (약 2GB) CSV 파일을 포함하는 300Gb 크기의 폴더가 있습니다. 내 직업은 내가 가지고있는 입력 파일 (또한 2GB 크기)에도 존재하는 특정 열에 값이있는 파일에서 특정 행을 추출하는 것입니다.
현재 Pandas 를 python
사용하여 원하는 데이터를 얻기 위해 기반 접근 방식을 사용 하려고하지만이 프로세스는 매우 느리고 한계로 인해 입력 파일과 폴더의 각 파일을 청크로 읽어야합니다. 꽤 오랜 시간 :
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, ID, Keyword
1 1 yodel
1 2 keyworks
1 3 puppy dog
2 4 see-saw
...........
내가 사용하는 입력 파일은 문자열의 한 열입니다.
apple
banana
orange
see-saw
moneybags
.....
입력 데이터 샘플과 원하는 출력 예를 제공하십시오.
—
agc