计算同一ID组中连续的pandas datetime值之间的天数差异

时间:2017-01-24 16:58:06

标签: python pandas

我正在尝试计算同一ID中连续日期时间值之间的天数差异。

这是我的数据框和代码:

d = {'ID': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c'],
'date': ['10/1/2010','10/1/2010','10/10/2010','10/10/2010','1/1/2001','3/1/2001','3/1/2001','6/1/2001','1/1/1990','3/1/1990','6/1/1990']}

df = pd.DataFrame(d)
df['date'] = pd.to_datetime(df['date'])
df['Days'] = df.groupby('ID')['date'].diff().fillna('')
df 

然而,当连续日期彼此相同时,我得到“0天”。

例如,有两个'2010-10-10'是ID'a'的成员; '2010-10-10'的第一行的值为'9天',但第二行的返回'0天'。我的目标是编写一个代码,以便两者都有'9天'。

1 个答案:

答案 0 :(得分:1)

你可以用 nan 替换0,然后进行前向填充:

import numpy as np
import pandas as pd
df['Days'] = (df.groupby('ID', group_keys=False)
                .apply(lambda g: g['date'].diff().replace(0, np.nan).ffill()))
df

enter image description here