Расчет количества месяцев в DataFrame в Python Pandas?

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

df = pd.DataFrame({"ID" : ["1", "2", "3"],
                   "Date" : ["12/11/2020", "12/10/2020", "05/04/2020"]})

И мне нужно рассчитать количество МЕСЯЦЕВ из столбца Дата до сегодняшнего дня. Ниже я загружаю результат, который мне нужен:

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

jezrael 23.12.2020 13:15
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
244
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте использовать этот код, который вычитает время сейчас со столбцом 'Date', я также использую np.ceil, потому что это округляет число:

df['Date'] = pd.to_datetime(df['Date'])
df['Amount'] = ((pd.to_datetime('now') - df['Date']) / np.timedelta64(1, 'M')).apply(np.ceil)
print(df)
Ответ принят как подходящий

Вы можете изменить это решение для вычитания скаляром d:

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

d = pd.to_datetime('now')
df['Amount'] = 12 * (d.year - df['Date'].dt.year) + d.month - df['Date'].dt.month

print (df)
  ID       Date  Amount
0  1 2020-11-12       1
1  2 2020-10-12       2
2  3 2020-04-05       8
from datetime import datetime
import pandas as pd
import numpy as np
df = pd.DataFrame({"ID" : ["1", "2", "3"],
                   "Date" : ["12/11/2020", "12/10/2020", "05/04/2020"]})
df['Month_diff'] = round(((datetime.now() - pd.to_datetime(df.Date,infer_datetime_format=True,dayfirst=True))/np.timedelta64(1, 'M'))-0.5)

Это будет однострочник, в котором вы преобразуете столбец Date в формат даты и времени, а затем выполняете операцию. Выход:

   ID   Date        Month_diff
0   1   12/11/2020  1.0
1   2   12/10/2020  2.0
2   3   05/04/2020  8.0

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