我正在使用python执行同类群组分析,而我在创建一个新列时遇到了问题,该列总结了用户与我们共同停留的总月数。
我知道答案背后的数学,我所要做的就是:
所以在Excel中,它看起来像这样:
=(YEAR(C2)-YEAR(B2))* 12 +(MONTH(C2)-MONTH(B2))
C是客户取消日期,B是他们开始的时间
问题是我是Python和Pandas的新手,我在Python中翻译该函数时遇到了麻烦
到目前为止我尝试过:
df['Lifetime'] = df.Plan_Cancel_Date('%Y') - df.Plan_Start_Date('%Y')*12 +
df.Plan_Cancel_Date('%m') - df.Plan_Start_Date('%m')
df.head()
它返回错误'系列'是不可赎回的,我对这意味着什么有一般性的了解。
然后我尝试了:
def LTVCalc (Plan_Start_Date, Plan_Cancel_Date):
df['Lifetime'] = df.Plan_Cancel_Date('%Y') - df.Plan_Start_Date('%Y')*12 +
df.Plan_Cancel_Date('%m') - df.Plan_Start_Date('%m')
df.head()
但是,这并没有增加专栏#39; Lifetime'到DataFrame。
任何能够帮助新秀的人都会?
答案 0 :(得分:1)
我认为需要先转换to_datetime
,然后再使用dt.year
和
dt.month
:
df = pd.DataFrame({
'Plan_Cancel_Date': ['2018-07-07','2019-03-05','2020-10-08'],
'Plan_Start_Date': ['2016-02-07','2017-01-05','2017-08-08']
})
#print (df)
#if necessary convert to datetimes
df.Plan_Start_Date = pd.to_datetime(df.Plan_Start_Date)
df.Plan_Cancel_Date = pd.to_datetime(df.Plan_Cancel_Date)
df['Lifetime'] = ((df.Plan_Cancel_Date.dt.year - df.Plan_Start_Date.dt.year)*12 +
df.Plan_Cancel_Date.dt.month - df.Plan_Start_Date.dt.month)
print (df)
Plan_Cancel_Date Plan_Start_Date Lifetime
0 2018-07-07 2016-02-07 29
1 2019-03-05 2017-01-05 26
2 2020-10-08 2017-08-08 38