>source

일일 판매 보고서를 모두 공용 폴더에 저장했습니다. 각 파일의 이름은 해당 날짜로 지정됩니다. 예 : 01-01-2019-Sales.csv, 02-01-2019-Sales.csv 등 모든 파일은 "C : \ Desktop \ Sales"폴더 경로에 저장됩니다. 이제 05-01-2019에서 04-02-2019 사이의 모든 파일을 추출하고 결합하고 싶습니다.

아래 코드를 사용하여 팬더로 모든 파일을 추출 할 수 있다는 것을 알고 있습니다

import pandas as pd
import glob
import os
file_path = r'C:\Desktop\Sales'
all_files = glob.glob(os.path.join(file_path,'*.csv'))
df = pd.concat([pd.read_csv(f) for f in all_files], sort=False)

그러나 내 질문은 팬더/파이썬을 사용하여 지정된 특정 날짜 사이에 파일을 추출하는 방법입니다. (날짜와 함께 저장된 파일 이름 사용) 예;05-01-2019에서 04-02-2019 사이의 파일 만 추출하십시오.

  • 답변 # 1

    이건 어때

    start_date = "05-01-2019"
    end_date = "04-02-2019"
    all_csv_files = [x for x in os.listdir(file_path) if x.endswith('.csv')]
    correct_date_files = [x for x in all_csv_files 
                          if x >= start_date + "-Sales.csv" and x <= end_date + "-Sales.csv"]
    df = pd.concat([pd.read_csv(f) for f in correct_date_files], sort=False)
    
    

    당신은 기본적으로 모든 .csv 를 나열  디렉토리에있는 파일을 선택하고 선택한 날짜 사이의 파일 만 가져옵니다.

  • 답변 # 2

    이 코드는 도움이 될 것입니다

    import datetime
    d1 = datetime.date(2019,1,1)
    d2 = datetime.date(2019,2,1)
    d3 = datetime.date(2019,1,20)
    d4 = datetime.date(2019,2,20)
    print(d1<d3<d2)
    # True
    print(d1<d4<d2)
    # False
    
    

  • 답변 # 3

    날짜를 비교로 사용하십시오 :

    import pandas as pd
    import glob
    import os
    from time import strptime
    file_path = r'C:\Desktop\Sales'
    all_files = glob.glob(os.path.join(file_path,'*.csv'))
    start_date = strptime('04-02-2019', '%m-%d-%Y')
    end_date = strptime('05-01-2019', '%m-%d-%Y')
    df = pd.concat([pd.read_csv(f) for f in all_files
                    if start_date < strptime(f, '%d-%m-%Y.csv') < end_date],
                   sort=False)
    
    

  • 답변 # 4

    날짜를 yyyy-mm-dd 변경과 어휘 적으로 비교할 수 있습니다.

    L = [ '01-01-2019-Sales.csv', '02-01-2019-Sales.csv']
    >>> start = '2018-12-01'
    >>> end = '2019-02-01'
    >>> for file in L:
        m, d, yr = file.split('-')[:3]
        date = '-'.join([yr, m, d])
        if start <= date <= end:
            print(file)
    
    01-01-2019-Sales.csv
    02-01-2019-Sales.csv
    
    

관련 자료

  • 이전 python - 열 이름 별 데이터 프레임의 하위 세트 목록
  • 다음 python - 목록 이해 내의 여러 if