>source

공백으로 구분 된 csv 파일을 읽으려고합니다. 열 간격이 균일하지 않고 한 열 STN_NAME 공백으로 구분 된 문자가 있습니다. 데이터 형식은 다음과 같습니다.

STN CODE      LAT        LON     Un_1      STN_NAME                     S_YR E_YR  Un_2
ACM00078861  17.1170  -61.7830   10.0    COOLIDGE FIELD (UA)            1947 1993  13896
AEM00041217  24.4333   54.6500   16.0    ABU DHABI INTERNATIONAL AIRPOR 1983 2018  36109
AEXUAE05467  25.2500   55.3700    4.0    SHARJAH                        1935 1942   2477
AFM00040911  36.7000   67.2000  378.0    MAZAR-I-SHARIF                 2010 2014   2179
AFM00040913  36.6667   68.9167  433.0    KUNDUZ                         2010 2013   4540

나는 사용했다 pd.read_fwf 그 csv 파일을 읽으십시오. 파일에 2788 개의 행이 있지만 pd.read_fwf 파일의 처음 30 개 행과 마지막 30 개 행만 읽습니다.

import os
import csv
import pandas as pd
with open('radiosonde_stations.csv') as csvfile:
    
    data = pd.read_fwf(csvfile, infer_nrows=2790)
    query = data[(data['LAT'] >= -18) & (data['LAT'] <= 45) & (data['LON'] >= 48) & (data['LON'] <= 117)]
    print(data)
    print(query)
    file = 'southeast_asia_stnlist.csv'
    with open(os.path.join('/home/DATA/RADIOSONDE/', file), 'a') as output:
        writer = csv.writer(output)
        writer.writerow([query])

다음과 같은 형태로 출력을 제공합니다. (처음 30 행과 마지막 30 행만 인쇄)

25    AGM00060571  31.5000   -2.2500   811.0                          BECHAR   
26    AGM00060580  31.9333    5.4000   152.0                         OUARGLA   
27    AGM00060590  30.5670    2.8670   397.0                        EL-GOLEA   
28    AGM00060602  30.1330   -2.1670   505.0                      BENI-ABBES   
29    AGM00060607  29.2500    0.2830   312.0                        TIMIMOUN   
          ...      ...       ...     ...                             ...   
2758  ZZV00ASEU02 -98.8888 -998.8888  -998.8                          ASEU02   
2759  ZZV00ASEU03 -98.8888 -998.8888  -998.8                          ASEU03   
2760  ZZV00ASEU04 -98.8888 -998.8888  -998.8                          ASEU04  

조건을 적용하고 싶습니다 lat & lon 열과 다른 파일에 출력을 씁니다. 그러나 다른 csv 파일에 쓰는 동안 위에 표시된 것과 같은 방식으로 작성됩니다 (처음 30 줄, ----, 마지막 30 줄). 어떻게 모든 데이터를 csv 파일에 완전히 쓸 수 있습니까?

감사!

  • 답변 # 1

    작성하려면 csv , 당신은 직접 사용할 수 있습니다 .to_csv() 의 기능 pandas 도서관.

    import os
    import csv
    import pandas as pd
    with open('radiosonde_stations.csv') as csvfile:
        
        data = pd.read_fwf(csvfile, infer_nrows=2790)
        query = data[(data['LAT'] >= -18) & (data['LAT'] <= 45) & (data['LON'] >= 48) & (data['LON'] <= 117)]
        print(data)
        print(query)
        file = 'southeast_asia_stnlist.csv'
        query.to_csv(file)
    
    

    이렇게하면 작업이 더 쉬워집니다.

    감사.

  • 이전 database - SQL 트리거로 마모되지 않는 테이블에 삽입
  • 다음 vue.js - 객체에서 src로 img 태그로 연결