Pandas 一列中的日期差异

Pandas date difference in one column

这是我的数据框:

import pandas as pd
df_manual = pd.DataFrame({'A': ['one', 'one', 'two', 'two', 'one'] ,
                   'B': ['Ar', 'Br', 'Cr', 'Ar','Ar'] ,
                   'C': ['12/15/2011', '11/11/2001', '08/7/2015', '07/3/1999','03/03/2000' ]})

我想创建一个列,其中包含列见的日期差异(使用先前分组)。这是我写的:

df_manual['C']=pd.to_datetime(df_manual['C'])
df_manual['diff'] =
df_manual.groupby(['A'])['C'].transform(lambda x: x.diff())

但是我得到的结果不是日差。 2001-11-11 和 2000-03-03 之间的结果差异是日期 1971-09-11,而我需要中间的天数。

知道如何实现吗?

使用apply代替transform

df_manual['diff'] = df_manual.groupby(['A'])['C'].apply(lambda x: x.diff())

结果输出:

     A   B          C       diff
0  one  Ar 2011-12-15        NaT
1  one  Br 2001-11-11 -3686 days
2  two  Cr 2015-08-07        NaT
3  two  Ar 1999-07-03 -5879 days
4  one  Ar 2000-03-03  -618 days

如果您希望 df_manual['diff'] 是一个整数而不是时间增量,请使用 dt.days 访问器:

df_manual['diff'] = df_manual.groupby(['A'])['C'].apply(lambda x: x.diff()).dt.days