这是我的数据框:
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的日期,而我需要的天数。
知道如何实现它吗?
答案 0 :(得分:2)
使用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']
是整数而不是timedelta,请使用dt.days
访问者:
df_manual['diff'] = df_manual.groupby(['A'])['C'].apply(lambda x: x.diff()).dt.days