簡體   English   中英

我如何從Pandas和Python中的特定標簽索引開始的Dataframe中切片X行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM