Trouver le plus proche ligne de DataFrame de temps donné dans les Pandas

J'ai une Pandas dataframe qui est indexé par un DatetimeIndex:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 53732 entries, 1993-01-07 12:23:58 to 2012-12-02 20:06:23
Data columns:
Date(dd-mm-yy)_Time(hh-mm-ss)       53732  non-null values
Julian_Day                          53732  non-null values
AOT_870                             53732  non-null values
440-870Angstrom                     53732  non-null values
440-675Angstrom                     53732  non-null values
500-870Angstrom                     53732  non-null values
Last_Processing_Date(dd/mm/yyyy)    53732  non-null values
Solar_Zenith_Angle                  53732  non-null values
time                                53732  non-null values
dtypes: datetime64[ns](2), float64(6), object(1)

Je veux trouver la ligne qui est plus proche d'un certain temps:

image_time = dateutil.parser.parse('2009-07-28 13:39:02')

et de trouver comment fermer. Jusqu'à présent, j'ai essayé diverses choses, fondé sur l'idée de soustraire le temps que je veux de tous les temps et de trouver la plus petite valeur absolue, mais aucun n'est tout à fait l'air de fonctionner.

Par exemple:

aeronet.index - image_time

Donne une erreur qui, je pense, est due à +/- sur un Datetime indice de décalage de choses, donc j'ai essayé de mettre l'index dans une autre colonne, puis en travaillant sur:

aeronet['time'] = aeronet.index
aeronet.time - image_time

Cela semble fonctionner, mais pour faire ce que je veux, j'ai besoin d'obtenir l'ABSOLU de la différence de temps, de ne pas la différence relative. Toutefois, en cours d'exécution juste abs ou np.abs sur il donne une erreur:

abs(aeronet.time - image_time)

C:\Python27\lib\site-packages\pandas\core\series.pyc in __repr__(self)
   1061         Yields Bytestring in Py2, Unicode String in py3.
   1062         """
-> 1063         return str(self)
   1064 
   1065     def _tidy_repr(self, max_vals=20):

C:\Python27\lib\site-packages\pandas\core\series.pyc in __str__(self)
   1021         if py3compat.PY3:
   1022             return self.__unicode__()
-> 1023         return self.__bytes__()
   1024 
   1025     def __bytes__(self):

C:\Python27\lib\site-packages\pandas\core\series.pyc in __bytes__(self)
   1031         """
   1032         encoding = com.get_option("display.encoding")
-> 1033         return self.__unicode__().encode(encoding, 'replace')
   1034 
   1035     def __unicode__(self):

C:\Python27\lib\site-packages\pandas\core\series.pyc in __unicode__(self)
   1044                     else get_option("display.max_rows"))
   1045         if len(self.index) > (max_rows or 1000):
-> 1046             result = self._tidy_repr(min(30, max_rows - 4))
   1047         elif len(self.index) > 0:
   1048             result = self._get_repr(print_header=True,

C:\Python27\lib\site-packages\pandas\core\series.pyc in _tidy_repr(self, max_vals)
   1069         """
   1070         num = max_vals //2
-> 1071         head = self[:num]._get_repr(print_header=True, length=False,
   1072                                     name=False)
   1073         tail = self[-(max_vals - num):]._get_repr(print_header=False,

AttributeError: 'numpy.ndarray' object has no attribute '_get_repr'

Suis-je aborder ce la bonne manière? Si oui, comment doit-je obtenir abs de travail, de sorte que je peux ensuite sélectionner le minimum absolu de la différence de temps, et donc d'obtenir le plus proche du temps. Si non, quel est le meilleur moyen de faire cela avec une Pandas temps de la série?

OriginalL'auteur robintw | 2013-02-27