>

날짜 (일별)와 온도 데이터가 포함 된 csv 파일이 많이 있습니다. 그러나 파일은 다른 날짜로 제공됩니다 (때로는 겹치거나 누락 된 날짜가 있습니다.…). 내가하고 싶은 일은 첫 번째 열을 날짜로 사용하여 소스 파일을 만들고 (모든 날짜 포함) 날짜에 해당하는 다른 CSV 파일에서 온도 데이터 열을 추가하는 것입니다.

더 간단하게하기 위해 하나의 파일 (df1) 만 가지고 있다고 생각합니다. 그래서 날짜 시간 (df2)을 소스 파일로 정의하고 pd.concate ()를 사용하여 df1을 추가하려고했습니다. 이것은 작동하지만 모든 행을 유지하려는 동안 df1에서 사용할 수없는 날짜를 제거합니다.

import pandas as pd
data = {'Datestart':['1/1/2010', '1/2/2010', '1/5/2010', '1/10/2010'],   'Temp':[20, 21, 19, 18]} 
df1 = pd.DataFrame(data)
df2 = pd.DataFrame()
df2['Date'] = pd.date_range(start='1/1/2010', end='1/20/2010', freq='D')
df3 = pd.concat([df2.set_index('Date'),     df1.set_index('Datestart').Temp],axis=1,join='inner')

이것을 만든다 :

           Temp
2010-01-01    20
2010-01-02    21
2010-01-05    19
2010-01-10    18

필요한 동안 :

1/1/2010   20
1/2/2010   21
1/3/2010   NaN
1/4/2010   NaN
1/5/2010   19
1/6/2010   NaN
1/7/2010   NaN
1/8/2010   NaN
1/9/2010   NaN
1/15/2010   18
1/16/2010  NaN
1/17/2010  NaN
1/20/2010  NaN
1/21/2010  NaN


  • 답변 # 1

    Datestart 변환 시도  먼저 datetime으로 병합 한 다음

    df1['Datestart'] = pd.to_datetime(df1['Datestart'])
    df3 = df1.merge(df2, how = "outer", left_on = 'Datestart', right_on = 'Date')
    
    

    그런 다음 Datestart 를 떨어 뜨릴 수 있습니다  날짜 열을 다시 포맷하십시오.

    df3.drop('Datestart', axis = 1, inplace = True)
    df3['Date'] = df3['Date'].dt.strftime('%m/%d/%Y') 
    df3.set_index('Date', inplace = True)
    df3.sort_index(inplace = True)
    
    #Prints
                Temp
    Date            
    01/01/2010  20.0
    01/02/2010  21.0
    01/03/2010   NaN
    01/04/2010   NaN
    01/05/2010  19.0
    01/06/2010   NaN
    01/07/2010   NaN
    01/08/2010   NaN
    01/09/2010   NaN
    01/10/2010  18.0
    01/11/2010   NaN
    01/12/2010   NaN
    01/13/2010   NaN
    01/14/2010   NaN
    01/15/2010   NaN
    01/16/2010   NaN
    01/17/2010   NaN
    01/18/2010   NaN
    01/19/2010   NaN
    01/20/2010   NaN
    
    

  • 답변 # 2

    pd.concat 에서  전화, join=outer 를 사용해보십시오   join=inner 대신 . 두 데이터 세트에서 항목을 반환해야합니다.

관련 자료

  • 이전 python - qcalendar에서 데이터 가져 오기
  • 다음 OpenLayer Translate 이벤트가 시작되지 않았습니다