[英]How do i slice pandas Series with DatetimeIndex and put it in a DataFrame by rows?
[英]How do I slice X rows from a Dataframe begining at a specific label index in Pandas and Python
我想指定一個標簽索引,然后從數據幀中切片int X行。 而且我不一定知道我的結束標簽。 我的標簽通常是時間戳,但這沒關系。 我很難做到這一點,混合標簽和想要的整數行。
因此,如果:
df= pd.DataFrame(np.random.rand(8,3), columns = list('abc'), index = list('lmnopqrs'))
如何獲得此代碼給出的結果:
df.loc['q':'o':-1]
但是,如果我只知道'q'索引? 所以我想要一種返回如下邏輯的東西:
df.loc['q':"3 rows only":-1]
因此,通常我永遠不會知道“ q”是哪個int索引,但是我會知道它的名稱,而且我也不知道它在數據框中的位置。 謝謝。
我不確定是否有更好的方法來執行此操作,但是您可以使用df.index
來訪問df.index
中的索引,也可以使用df.index.tolist()
來以列表形式訪問索引。
因此,在您的情況下, df.index.tolist()
會給出-
In [13]: df.index.tolist()
Out[13]: ['l', 'm', 'n', 'o', 'p', 'q', 'r', 's']
然后,您可以使用list.index()
方法在該列表中找到q
的索引,然后獲取q
之前2
索引的元素。 范例-
In [19]: df.index[df.index.tolist().index('q')-2]
Out[19]: 'o'
您可以使用它來索引您的DataFrame,例如-
In [20]: df.loc['q':df.index[df.index.tolist().index('q')-2]:-1]
Out[20]:
a b c
q 0.791467 0.703116 0.268405
p 0.643924 0.434607 0.918549
o 0.630881 0.209446 0.351309
您可以使用.ix
屬性執行此.ix
:
index = df.index.searchsorted('q') # or just a number if you already have it.
offset = 3
df.ix[index : index - offset : -1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.