在新的熊猫数据框列中计算年,月等的日期时间差

问题描述 投票:16回答:7

我有一个像这样的熊猫数据框:

Name    start        end
A       2000-01-10   1970-04-29

我想添加一个新列以提供startend列之间的年,月,日之间的差。

所以结果应该看起来像:

Name    start        end          diff
A       2000-01-10   1970-04-29   29y9m etc.

diff列也可以是datetime对象或timedelta对象,但是对我来说,关键点在于,我可以轻松地从中获得YearMonth。] >

直到现在我一直尝试的是:

df['diff'] = df['end'] - df['start']

这将导致新列包含10848 days。但是,我不知道如何将天转换为29y9m等

我有一个如下所示的pandas数据框:命名开始端A 2000-01-10 1970-04-29我想添加一个新列,以提供开始列和结束列之间的差值,以年为单位,...

python datetime pandas timedelta
7个回答
6
投票

通过简单的功能,您可以实现目标。

该函数通过简单的计算来计算年差和月差。


9
投票

relativedelta非常简单:


7
投票

我认为这是最“熊猫”的方式,无需使用任何for循环或定义外部函数:


6
投票

一种简单得多的方法是使用date_range函数并计算相同的长度


0
投票

您可以尝试使用以下函数来计算差异-


0
投票

类似于@DeepSpace的答案,这是类似SAS的实现:


0
投票

您可以尝试用这种方式用年创建一个新列:

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