在Python中使用Pandas Timestamp时,如何找到从特定日期到现在经过的时间?

问题描述 投票:0回答:1

我有一个数据框

公司名称 成立于
a 2004-01-01 00:00:00
b 2013-01-01 00:00:00
c 2008-01-01 00:00:00
d 1997-01-01 00:00:00
today = pd.Timestamp.now()
df["founded_on"]=pd.to_datetime(df["founded_on"])
df["Time_Since_founded_on"] = (today - df["founded_on"]).dt.days // 30

OverflowError:int64 加法溢出

我想知道每家公司已经营业了多少个月。

python pandas timestamp
1个回答
1
投票

使用月周期运算,使用

to_period('M')
转换:

df['Time_Since_founded_on'] = (pd.to_datetime(df['founded_on']).dt.to_period('M')
                                 .rsub(pd.Timestamp('today').to_period('M'))
                                 .apply(lambda x: x.n)
                              )

输出:

  company_name           founded_on  Time_Since_founded_on
0            a  2004-01-01 00:00:00                    242
1            b  2013-01-01 00:00:00                    134
2            c  2008-01-01 00:00:00                    194
3            d  1997-01-01 00:00:00                    326

请注意,您原来的方法(使用天数)会在较大时期内给出不正确的值,因为月份并不完全等于 30D:

df['Time_Since_founded_on'] = (pd.to_datetime(df['founded_on'])
                                 .rsub(pd.Timestamp('today'))
                                 .dt.days.div(30)
                              )

  company_name           founded_on  Time_Since_founded_on
0            a  2004-01-01 00:00:00             246.066667  # +4M
1            b  2013-01-01 00:00:00             136.466667  # +2M
2            c  2008-01-01 00:00:00             197.366667  # +3M
3            d  1997-01-01 00:00:00             331.266667  # +5M

更好(但不完美)的近似值是除以

365.25/12

© www.soinside.com 2019 - 2024. All rights reserved.