计算 pandas 中的日期差异(以天为单位)
Compute date difference in days in pandas
我有一个看起来像这样的数据框
date id
0 2019-01-15 c-15-Jan-2019-0
1 2019-01-26 c-26-Jan-2019-1
2 2019-02-02 c-02-Feb-2019-2
3 2019-02-15 c-15-Feb-2019-3
4 2019-02-23 c-23-Feb-2019-4
我想创建一个名为 'days_since' 的新列,显示自上次记录以来经过的天数。例如,新列将是
date id days_since
0 2019-01-15 c-15-Jan-2019-0 NaN
1 2019-01-26 c-26-Jan-2019-1 11
2 2019-02-02 c-02-Feb-2019-2 5
3 2019-02-15 c-15-Feb-2019-3 13
4 2019-02-23 c-23-Feb-2019-4 7
我尝试使用
df_c['days_since'] = df_c.groupby('id')['date'].diff().apply(lambda x: x.days)
但这只是返回了一个充满空值的列。日期列充满了日期时间对象。有什么想法吗?
我认为你把它搞得太复杂了,鉴于 date
列包含日期时间数据,你可以使用:
>>> df['date'].diff()
0 NaT
1 11 days
2 7 days
3 13 days
4 8 days
Name: date, dtype: timedelta64[ns]
或者如果您想要天数:
>>> df['date'].diff().dt.days
0 NaN
1 11.0
2 7.0
3 13.0
4 8.0
Name: date, dtype: float64
因此您可以指定天数:
df['days_since'] = df['date'].diff().dt.days
这给了我们:
>>> df
date days_since
0 2019-01-15 NaN
1 2019-01-26 11.0
2 2019-02-02 7.0
3 2019-02-15 13.0
4 2019-02-23 8.0
我有一个看起来像这样的数据框
date id
0 2019-01-15 c-15-Jan-2019-0
1 2019-01-26 c-26-Jan-2019-1
2 2019-02-02 c-02-Feb-2019-2
3 2019-02-15 c-15-Feb-2019-3
4 2019-02-23 c-23-Feb-2019-4
我想创建一个名为 'days_since' 的新列,显示自上次记录以来经过的天数。例如,新列将是
date id days_since
0 2019-01-15 c-15-Jan-2019-0 NaN
1 2019-01-26 c-26-Jan-2019-1 11
2 2019-02-02 c-02-Feb-2019-2 5
3 2019-02-15 c-15-Feb-2019-3 13
4 2019-02-23 c-23-Feb-2019-4 7
我尝试使用
df_c['days_since'] = df_c.groupby('id')['date'].diff().apply(lambda x: x.days)
但这只是返回了一个充满空值的列。日期列充满了日期时间对象。有什么想法吗?
我认为你把它搞得太复杂了,鉴于 date
列包含日期时间数据,你可以使用:
>>> df['date'].diff()
0 NaT
1 11 days
2 7 days
3 13 days
4 8 days
Name: date, dtype: timedelta64[ns]
或者如果您想要天数:
>>> df['date'].diff().dt.days
0 NaN
1 11.0
2 7.0
3 13.0
4 8.0
Name: date, dtype: float64
因此您可以指定天数:
df['days_since'] = df['date'].diff().dt.days
这给了我们:
>>> df
date days_since
0 2019-01-15 NaN
1 2019-01-26 11.0
2 2019-02-02 7.0
3 2019-02-15 13.0
4 2019-02-23 8.0