我需要将我创建的变量从日期时间转换为时间戳。
我需要它以时间戳格式对我的熊猫系列执行lambda函数,该函数存储为datetime64。 lambda函数应该可以找到startDate和整个熊猫系列之间几个月之间的差异。请帮忙吗?
我尝试使用relativedelta来计算月份差异,但是我不确定如何用熊猫系列来实现。
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”)。我想找到startDate和系列中所有日期之间的月份差异。
答案 0 :(得分:0)
由于我没有您的原始csv,因此我整理了一些示例数据,并希望设法大大缩短您的代码:
open_date_data = pd.Series(pd.date_range('2017/07/01', periods=10, freq='M'))
startDate = pd.Timestamp("2017/07/01")
然后,在此answer的帮助下获得适当的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))