Python >> Python-zelfstudie >  >> Python

controleer op ontbrekende datums in de index

U kunt DatetimeIndex.difference(other)

. gebruiken
pd.date_range(start = '2013-01-19', end = '2018-01-29' ).difference(df.index)

Het geeft de elementen terug die niet aanwezig zijn in de andere


Voorbeeld:

Neem als minimaal voorbeeld dit:

>>> df
              GWA_BTC   GWA_ETH  GWA_LTC  GWA_XLM  GWA_XRP
Date                                                      
2013-01-19  11,826.36  1,068.45   195.00     0.51     1.82
2013-01-20  13,062.68  1,158.71   207.58     0.52     1.75
2013-01-28  12,326.23  1,108.90   197.36     0.48     1.55
2013-01-29  11,397.52  1,038.21   184.92     0.47     1.43

En we kunnen de ontbrekende datums vinden tussen 2013-01-19 en 2013-01-29

Methode 1:

Zie het antwoord van @Vaishali

Gebruik .difference om het verschil te vinden tussen uw datetime-index en de verzameling van alle datums binnen uw bereik:

pd.date_range('2013-01-19', '2013-01-29').difference(df.index)

Wat terugkomt:

DatetimeIndex(['2013-01-21', '2013-01-22', '2013-01-23', '2013-01-24',
               '2013-01-25', '2013-01-26', '2013-01-27'],
              dtype='datetime64[ns]', freq=None)

Methode 2:

U kunt uw dataframe opnieuw indexeren met alle datums binnen uw gewenste datumbereik en zoeken waar reindex heeft NaN . ingevoegd s.

En om ontbrekende datums te vinden tussen 2013-01-19 en 2013-01-29 :

>>> df.reindex(pd.date_range('2013-01-19', '2013-01-29')).isnull().all(1)

2013-01-19    False
2013-01-20    False
2013-01-21     True
2013-01-22     True
2013-01-23     True
2013-01-24     True
2013-01-25     True
2013-01-26     True
2013-01-27     True
2013-01-28    False
2013-01-29    False
Freq: D, dtype: bool

Die waarden met True zijn de ontbrekende datums in uw originele dataframe