我需要将我创建的变量从日期时间转换为时间戳。

我需要以时间戳格式对我的pandas系列执行lambda函数,该函数存储为datetime64。 lambda函数应该可以找到startDate和整个pandas系列之间几个月的差异。请帮忙?

我已经尝试过使用relativedelta来计算月份差异,但是我不确定如何用pandas系列来实现。

from datetime import datetime 
import pandas as pd
from dateutil.relativedelta  import relativedelta as rd

#open the data set and store in the series ('df')
file = pd.read_csv("test_data.csv")
df = pd.DataFrame(file)

#extract column "AccountOpenedDate into a data frame"
open_date_data = pd.Series.to_datetime(df['AccountOpenedDate'], format = '%Y/%m/%d')

#set the variable startDate
dateformat = '%Y/%m/%d %H:%M:%S'
set_date  = datetime.strptime('2017/07/01 00:00:00',dateformat)
startDate = datetime.timestamp(set_date)

#This function calculates the difference in months between two dates: ignore 

def month_delta(start_date, end_date):
    delta = rd(end_date, start_date)
    # >>> relativedelta(years=+2, months=+3, days=+28)
    return 12 * delta.years + delta.months

d1 = datetime(2017, 7, 1)
d2 = datetime(2019, 10, 29)
total_months = month_delta(d1, d2)

# Apply a lambda function to each row by adding 5 to each value in each column
dfobj = open_date_data.apply(lambda x: x + startDate)
print(dfobj) 

我只使用加载的数据集中的一列。它是以下格式的日期列("%Y /%m /%d%H:%M:%S"). I要查找startDate和系列中所有日期之间的月份差异。

分析解答

由于我没有您的原始csv,因此我整理了一些示例数据,并希望设法大大缩短您的代码:

open_date_data = pd.Series(pd.date_range('2017/07/01', periods=10, freq='M')) 
startDate = pd.Timestamp("2017/07/01")

然后,在此回答的帮助下获得适当的month_diff公式:

def month_diff(a, b):
    return 12 * (a.year - b.year) + (a.month - b.month)

open_date_data.apply(lambda x: month_diff(x, startDate))