我有一個pandas.DataFrame df1
,它使用pandas.DateRange對象建立索引。方便地在數據幀中切割帶有日期時間索引的熊貓
如果我有一個d1
和d2
,作爲日期時間,爲什麼df[d1:d2]
不起作用,我如何獲得此切片?
羅埃爾
我有一個pandas.DataFrame df1
,它使用pandas.DateRange對象建立索引。方便地在數據幀中切割帶有日期時間索引的熊貓
如果我有一個d1
和d2
,作爲日期時間,爲什麼df[d1:d2]
不起作用,我如何獲得此切片?
羅埃爾
這工作:
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]
應該工作,因爲它確實爲系列:
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
嘗試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
您可以鏈接到一個源出於此?我在http://pandas.pydata.org/pandas-docs/stable/timeseries.html#daterange-is-a-valid-index,我還沒有找到截斷函數。 – Paragon 2012-03-20 14:17:04
它的工作原理,謝謝。有沒有理由更方便的'df [d1:d2]'不起作用? – saroele 2012-03-20 20:15:41
@Paragon:這裏是當前文檔(v0.7.2)中truncate描述的鏈接:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.truncate.html?highlight=截斷#pandas.DataFrame.truncate – saroele 2012-03-20 20:17:37