Как выполнить нарезку фрейма данных с использованием datetime? - PullRequest
7 голосов
/ 20 марта 2012

У меня есть pandas.DataFrame df1, проиндексированный с помощью объекта pandas.DateRange.

Если у меня есть d1 и d2 в качестве даты и времени, почему df[d1:d2] не работает, и как я могу получить этот фрагмент?

Ответы [ 2 ]

9 голосов
/ 21 марта 2012

Это работает:

In [25]: df.ix[d1:d2]
Out[25]: 
                   A         B         C         D
2000-01-10  1.149815  0.686696 -1.230991 -1.610557
2000-01-11 -1.296118 -0.172950 -0.603887  0.383690
2000-01-12 -1.034574 -0.523238  0.626968  0.471755
2000-01-13 -0.193280  1.857499 -0.046383  0.849935
2000-01-14 -1.043492 -0.820525  0.868685 -0.773050
2000-01-17 -1.622019 -0.363992  1.207590  0.577290

ср. http://pandas.pydata.org/pandas-docs/stable/indexing.html#advanced-indexing-with-labels

По первым принципам df[d1:d2] должно работать так же, как и для Series:

In [27]: df['A'][d1:d2]
Out[27]: 
2000-01-10    1.149815
2000-01-11   -1.296118
2000-01-12   -1.034574
2000-01-13   -0.193280
2000-01-14   -1.043492
2000-01-17   -1.622019
Name: A

Создание проблемы здесь: https://github.com/pydata/pandas/issues/946

7 голосов
/ 20 марта 2012

Попробуйте метод truncate:

df.truncate(before=d1, after=d2)

Он не изменит ваш исходный df и вернет усеченный.

Из документов:

Function truncate a sorted DataFrame / Series before and/or after
some particular dates.

Parameters
----------
before : date
    Truncate before date
after : date
    Truncate after date

Returns
-------
truncated : type of caller
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...