[英]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 |
說,第4行滿足條件,我想看到第2行,第3行和第4行。
我想通過滿足條件的第 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.