4 열 x 180.000 행의 데이터 파일이 있습니다. 열 3의 값이 특정 간격, 즉 최소값 < 열 3 값 < 최대 값이라는 기준에 따라 새 파일에 저장 될 전체 데이터 행을 선택하고 싶습니다.데이터 행을 선택하는 방법
아이디어가 있습니까?
4 열 x 180.000 행의 데이터 파일이 있습니다. 열 3의 값이 특정 간격, 즉 최소값 < 열 3 값 < 최대 값이라는 기준에 따라 새 파일에 저장 될 전체 데이터 행을 선택하고 싶습니다.데이터 행을 선택하는 방법
아이디어가 있습니까?
사용 csv
module는 단지 필터링, 읽기 및 쓰기 :
with open(inputfilename, 'rb') as inputfile, open(outputfile, 'wb') as outputfile:
reader = csv.reader(inputfile)
writer = csv.writer(outputfile)
for row in reader:
if minval <= int(row[2]) <= maxval:
writer.writerow(row)
이것은 훌륭하게 작동 할 것이지만 그의 데이터 형식이 csv 모듈과 작동하지 않을 수도 있습니다. –
가능성은 있지만, OP가 파일 전체에 걸쳐 4 개의 열을 가지고 있다는 것을 감안할 때 작동 할 가능성이 있습니다. 대답은 대부분의 형식으로 쉽게 조정할 수 있습니다. 그렇지 않으면 나머지 일부의 99 %에 대한 트릭을 수행하는 빠른'.split (..) '이 있습니다. –
사실입니다. csv의 형식에 따라 구분 기호를 추가해야 할 수도 있습니다. 우리는 좀 더 많은 정보를 기다려야 할 것 같아요. –
간단한 CSV 읽기/쓰기 수행 할 수 있습니다. Numpy를 사용하여보다 우아하고 벡터화 된 형식으로 행할 수 있으며 행 수가 많기 때문에 Numpy가 훨씬 더 빨라질 수 있습니다.
import numpy as np
#Load file into a 'MATRIX'
data=np.loadtxt('name_of_delimited_file.txt')
# Find indices where the condition is met
idx_condition_met=(data[:,2] > min) & (data[:,2] < max)
np.savetxt('output.txt', data[idx_condition_met], delimiter=',')
파이썬에서이 행을 다른 테이블에 삽입하는 SQL 문을 실행할 수 있습니다. 파이썬이 SQL 데이터베이스와 어떻게 통신 할 수 있는지 읽어보십시오. 귀하의 실제 조건 기준은 그 방법으로 명확하게 표현되지 않습니다. – Tim
지금까지 시도한 것은 무엇입니까? 파일은'csv' 모듈에 맞는 형식입니까? –
@Tim :이 파일을 새 파일에 기록해야하는 경우 SQL을 사용할 필요가 없습니다. 어쨌든 * 전체 파일을 읽을 필요가 있습니다. 행별로 필터링하고 일치하는 행을 쓸 수 있습니다. –