gpt4 book ai didi

python - 如何在给定的 datetime64 值范围内获取错过的日期?

转载 作者:行者123 更新时间:2023-11-28 22:21:10 25 4
gpt4 key购买 nike

我在 Pandas 中有以下 DataFrame df:

dti                  id_n
2016-07-27 13:55:00 1
2016-07-29 13:50:07 1
2016-07-29 14:50:08 1
2016-07-30 23:50:01 2
2016-08-01 12:50:00 3
2016-08-02 12:50:00 3

dti 的类型是datetime64。我想获取新的 DataFrame result,其中错过了 dtiminmax 值之间的日期:

结果=

2016-07-28
2016-07-31

我怎样才能得到它?

最佳答案

使用floor对于删除时间,然后创建 date_range得到 difference :

d = df['dti'].dt.floor('d')
print (d)
0 2016-07-27
1 2016-07-29
2 2016-07-29
3 2016-07-30
4 2016-08-01
5 2016-08-02
Name: dti, dtype: datetime64[ns]

a = pd.date_range(d.min(), d.max(), freq='d')
print (a)
DatetimeIndex(['2016-07-27', '2016-07-28', '2016-07-29', '2016-07-30',
'2016-07-31', '2016-08-01', '2016-08-02'],
dtype='datetime64[ns]', freq='D')

b = a.difference(d)
print (b)
DatetimeIndex(['2016-07-28', '2016-07-31'], dtype='datetime64[ns]', freq=None)

df1 = pd.DataFrame({'missing':a.difference(d)})
print (df1)
missing
0 2016-07-28
1 2016-07-31

另一种解决方案是通过mean 进行下采样并获取NaN 值的索引:

a = df.resample('d', on='dti').mean()
print (a)
id_n
dti
2016-07-27 1.0
2016-07-28 NaN
2016-07-29 1.0
2016-07-30 2.0
2016-07-31 NaN
2016-08-01 3.0
2016-08-02 3.0

b = a.index[a['id_n'].isnull()]
print (b)
DatetimeIndex(['2016-07-28', '2016-07-31'], dtype='datetime64[ns]', name='dti', freq=None)

关于python - 如何在给定的 datetime64 值范围内获取错过的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48543979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com