如何查找元素之间的差异,忽略NA值



我试图找到pandas数据框架列中日期时间之间的差异,但是列中的许多条目都是NA值。示例数据集:

Dates = pd.Series([np.nan, np.nan, np.nan, '2019-12-11', np.nan, '2019-12-14', np.nan, np.nan, '2019-12-20', '2019-12-23'])

我的目标是找到每个列出的日期之间的时间间隔,忽略日期之间有多少空值,即在'2019-12-20'和'2019-12-14'之间经过了多少天,同时忽略两者之间的2 NA值,并最终将该信息附加到新列。

你可以过滤掉nan然后使用diff

s = pd.Series([np.nan, np.nan, np.nan, '2019-12-11', np.nan, '2019-12-14', np.nan, np.nan, '2019-12-20', '2019-12-23'])
s = pd.to_datetime(s)
s[~s.isna()].diff()
# 3      NaT
# 5   3 days
# 8   6 days
# 9   3 days
# dtype: timedelta64[ns]

另一个选项是

s.ffill().diff()
# 0      NaT
# 1      NaT
# 2      NaT
# 3      NaT
# 4   0 days
# 5   3 days
# 6   0 days
# 7   0 days
# 8   6 days
# 9   3 days
# dtype: timedelta64[ns]

最新更新