Я работаю в Python с панелью данных панд. Фрейм данных содержит 4 столбца. Колонны, с которыми я работаю, - это год и урожай. Год - это год, когда произошло конкретное событие, а урожай - это количество дней до 31 августа, когда произошло это событие. В общем, если урожай равен 23, то событие произошло 23 сентября того же года.
Меня просят выяснить, когда, в частности, произошел более ранний сбор данных в наборе данных. Для справки, мой фрейм данных называется «MyData». Итак, я сначала определил самый ранний год, как так:
Earliest = MyData.loc[MyData['year'].idxmin()]
Теперь я не уверен, как использовать переменную 'урожай', чтобы вернуть определенную дату (только с месяцами и днями).
Я пытался определить переменную базовой даты, равную 8/31, а затем просто добавить переменную 'урожай' из этой базовой даты. Это линия, которую я сейчас имею:
BaseDate = pd.to_datetime("08/31",format="%m/%d")
Это возвращает намного больше, чем я хочу. Я просто хочу, чтобы он вернулся 31.08. Затем я бы использовал эту переменную BaseDate, чтобы сделать что-то вроде этого:
print("The harvest happened on", BaseDate + pd.DateOffset(days=Earliest['harvest']),"of that year.")
И должно получиться что-то вроде: «Урожай произошел 16 августа того года».
Вместо этого в настоящее время возвращается следующее: «Урожай произошел 1900-09-23 00:00:00 того года».
Вероятно, для меня было бы лучше создать целый новый столбец во фрейме данных, который выполняет эту математику для каждой строки. Я открыт для решения, которое делает это, и на самом деле предпочел бы это! Но пока, то, как я это представил, было бы достаточно.
Когда я пытаюсь создать новый столбец, я записываю его следующим образом:
MyData['Date'] = datetime.datetime(2000,8,31) + MyData['harvest']
или
MyData['Date'] = BaseDate + MyData['harvest']
Но он возвращает эту ошибку: «неподдерживаемые типы операндов для +:« datetime.datetime »и« float »»