>source

두 가지 형식의 CSV 파일이 있습니다. '%m/%d/%Y %H:%M:%S''%d/%m/%Y %H:%M:%S' . 따라서 다음과 같은 ValueError가 발생합니다.

ValueError: time data '14/12/2020 17:43:15' does not match format '%m/%d/%Y %H:%M:%S'

샘플 데이터 file1.csv 월이 중간 인 경우 :

timestamp             
15/12/2020 11:01:54
15/12/2020 11:02:54
15/12/2020 13:33:24

동안 file2.csv , 월이 앞에 있습니다.

timestamp            
12/15/2020 11:01:54
12/15/2020 11:02:54
12/15/2020 13:33:24

열이 문자열로 제공되면 변환하여 date . 이것은 코드입니다.

responses_df['date_only'] = [datetime.strptime(val, format='%m/%d/%Y %H:%M:%S').date() for val in responses_df['timestamp']]

내 계획은 리디렉션하는 것입니다 format= 극복 할 기능에 ValueError 형식을 '%m/%d/%Y %H:%M:%S' ...에 '%d/%m/%Y %H:%M:%S' .

이 같은.. :

responses_df['date_only'] = [datetime.strptime(val, format=get_format()).date() for val in responses_df['timestamp']]
def get_format():
     if ValueError is raised, use '%d/%m/%Y %H:%M:%S'
     else, use '%m/%d/%Y %H:%M:%S'


  • 답변 # 1

    시도

    s1 = pd.to_datetime(df['timestamp'],format='%m/%d/%Y %H:%M:%S', errors='coerce')
    s2 = pd.to_datetime(df['timestamp'],format='%d/%m/%Y %H:%M:%S', errors='coerce')
    
    

    그때

    df['new']=s1.fillna(s2)
    
    

  • 답변 # 2

    단일로 결합하기 전에 두 개의 파일을 두 개의 서로 다른 데이터 프레임으로 읽었다 고 가정합니다. df -첫 번째 파일의 경우 통과 dayfirst=True . 두 번째 파일은하지 마십시오. 그런 다음 둘 다 원하는 형식으로 변환하십시오. dt.strftime() :

    df1['timestamp'] = pd.to_datetime(df1['timestamp'], dayfirst=True).dt.strftime('%d/%m/%Y %H:%M:%S')
    df2['timestamp'] = pd.to_datetime(df2['timestamp']).dt.strftime('%d/%m/%Y %H:%M:%S')
    df1, df2
    Out[1]: 
    (             timestamp
     0  15/12/2020 11:01:54
     1  15/12/2020 11:02:54
     2  15/12/2020 13:33:24,
                  timestamp
     0  15/12/2020 11:01:54
     1  15/12/2020 11:02:54
     2  15/12/2020 13:33:24)
    
    

  • 이전 php - 고유 키를 생성하고 작동하지 않는 데이터베이스에 저장
  • 다음 python - 상속에 대한 도움이 필요합니다