Как создать новый столбец, вычисляющий дату в Python Pandas?

У меня есть DataFrame, как показано ниже:

df['Date'] =
...
936   2012-12-31
938   2012-12-29
965   2012-12-31
966   2012-12-31
967   2012-12-31
968   2012-12-31
969   2012-12-31
970   2012-12-29
971   2012-12-31
972   2012-12-29
973   2012-12-29

И мне нужно создать 1 новый столбец в этом DataFrame:

  1. New1 = количество месяцев от столбца «Дата» до сегодняшнего дня
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
220
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это может быть не самый элегантный способ, но здесь он работает.

data = { 'Date': [np.datetime64('2012-12-31'), np.datetime64('2012-12-29'), np.datetime64('2012-12-31')]}

df = pd.DataFrame(data, columns=['Date'])

def calculate_months(date):
    now = datetime.datetime.now() 
    diff = now - date 
    return diff / np.timedelta64(1,'M')

df['New1'] = df.Date.apply(calculate_months).tolist()

Все сложное находится внутри calculate_months, в основном найдите дельту между настоящим моментом и временем, переданным в качестве аргумента, а затем переведите это в месяцы, если вам не нужна десятичная часть, вы можете просто вычислить ее или что-то в этом роде.

У меня ошибка: NameError: имя 'datetime' не определено

dingaro 14.12.2020 02:41

Я пропустил импорт, вам нужно импортировать NumPy и datetime, чтобы этот код работал, поэтому просто добавьте import numpy as np и import datetime

Richard Montoya 14.12.2020 14:04

Другие вопросы по теме