![](/img/trans.png)
[英]Pandas calculate length of consecutive equal values from a grouped dataframe
[英]Find 5 consecutive row values in Pandas Dataframe that are equal
我有一個 dataframe 的格式
Col1 Col2 Col3
Time1 a Match
Time2 b NaN
Time3 c Match
Time4 d Match
Time5 e Match
Time6 f Match
Time7 g Match
Time8 h NaN
Time9 i Match
Time10 j NaN
因此,對於數據框,我想找到從 Time3 到 Time7 的值,因為 Col3 具有連續 5 行的匹配值。
我嘗試使用滾動 window,
idx = (df['Col3'].rolling(window=5) == "Match")
但是根據文檔,它似乎是為了計算而不是直接比較而制作的
go 有沒有其他優化的辦法呢?
一種經典方法是使用帶有自定義掩碼的 boolean 索引。 將其分解,它依賴於對連續匹配值進行分組,並計算組大小以對匹配行進行切片。
m = df.groupby(df['Col3'].ne('Match').cumsum())['Col3'].transform('size').ge(5)
df[m&m.shift()]
或者:
m = df['Col3'].ne('Match')
m2 = df.groupby((m|m.shift()).cumsum())['Col3'].transform('size').ge(5)
df[m2]
output:
Col1 Col2 Col3
2 Time3 c Match
3 Time4 d Match
4 Time5 e Match
5 Time6 f Match
6 Time7 g Match
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.