簡體   English   中英

Pandas DataFrame,將前 3 行子集到滿足條件的行?

[英]Pandas DataFrame, subset previous 3 rows to rows that meets condition?

我想將前 3 行子集到滿足給定條件的行。 有沒有辦法做到這一點,而不是獲取索引值並逐步對它們進行子集化?

另外,我想查看滿足條件的行的前 3 行加上其后的 3 行。

指數 列2
0 一種
1
2 C
3 d
4 電子
5 F
6 G
7 H
8 一世
9 j
  1. 說,第4行滿足條件,我想看到第2行,第3行和第4行。

  2. 我想通過滿足條件的第 4 行顯示從第 2 行到第 7 行的子集。

列的 Comapre 值,為Series.shift移動獲取起始行(這里是前 3 個,包括實際行,因此減去1 ),通過Series.cummax重復 Trues,在boolean indexing過濾,最后在DataFrame.head選擇 2 * N 行:

val = 'e'
N = 3

df = df[df.col2.shift(-N + 1).eq(val).cummax()].head(N * 2)
print (df)
  col2
2    c
3    d
4    e
5    f
6    g
7    h

第一個解決方案:

val = 'e'
N = 3

df = df[~df.col2.shift().eq(val).cummax()].tail(N)
print (df)
  col2
2    c
3    d
4    e

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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