我想將前 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 行的子集。
uj5u.com熱心網友回復:
列的 Comapre 值,移動以Series.shift獲得起始行(這里前 3 個包括實際行,因此減去1),重復 Trues by Series.cummax,過濾boolean indexing并最后選擇 2 * N 行DataFrame.head:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331157.html
