день выходит за пределы диапазона ошибки месяца, подозревая ее причину в високосном году

мой код, похоже, не понимает, что есть високосный год. Код отлично работает с данными невисокосного года. Другая проблема, с которой я сталкиваюсь, заключается в том, что когда я распечатываю данные, для года устанавливается значение 1900 по сравнению с фактическим годом.

def processing(chunk): enter code here
    being read in (by chunksize)
    chunk['Date'] = pd.to_datetime(chunk['Date'], format='%Y-%m-%d') 
    chunk['Year'] = chunk['Date'].dt.year.rename('Year') #creates a new 
        column with the year
    chunk['Month'] = chunk['Date'].dt.month.rename('Month') #new column 
        with month
    chunk['Day'] = chunk['Date'].dt.day.rename('Day') #new column with day
    chunk.drop('Date', 1, inplace=True)
return;
df = pd.read_csv('NLDN_CONUS_flash_and_cloud_2012_dT4KMG.txt', 
    delim_whitespace=True, 
    names=["Date", "Time", "Latitude", "Longitude", "Current", "Multi", 
    "Type"], chunksize=2000000, nrows=2000000)


chunk_list = []
for chunk in df:
    chunk_list.append(chunk)

df_concat = pd.concat(chunk_list)
df_concat['Date'] = pd.to_datetime(df_concat['Date'], format='%Y-%m-%d')
df_concat['month-day'] = df_concat['Date'].dt.strftime('%m-%d')
df_concat['Datetime'] = df_concat['month-day'] + ' ' + df_concat['Time']
df_concat = df_concat[['Datetime', 'Latitude', 'Longitude', 'Current', 
'Multi', 'Type']]
df_concat['Datetime'] = pd.to_datetime(df_concat['Datetime'], format='%m- 
     %d %H:%M:%S.%f')
df_concat.set_index(df_concat['Datetime'], inplace=True)
print(df_concat)

ValueError: день выходит за пределы допустимого диапазона для месяца


person Patrick Bowsher    schedule 21.05.2019    source источник


Ответы (1)


In

df_concat['Datetime'] = pd.to_datetime(df_concat['Datetime'], format='%m- 
     %d %H:%M:%S.%f')

вы конвертируете в дату и время без какой-либо информации о году. Таким образом, панды предполагают год по умолчанию, который равен 1900.

Я предлагаю использовать полную дату и время в качестве индекса, а затем группировать по дням года или тому, что необходимо.

person pktl2k    schedule 21.05.2019
comment
это также решит проблему с високосным годом? - person Patrick Bowsher; 21.05.2019
comment
1900 год не был високосным. Что означает: 29 февраля 1900 года не существует. Ваша ошибка, вероятно, из-за этого. - person pktl2k; 22.05.2019