我想在特定索引之前和之后獲取特定數量的行。但是,當我嘗試獲取行并且范圍大于索引數時,它不會回傳任何內容。鑒于此,我希望您繼續查找行,如下所示:
df = pd.DataFrame({'column': range(1, 6)})
column
0 1
1 2
2 3
3 4
4 5
index = 2
df.iloc[idx]
3
# Now I want to get three values before and after that index.
# Something like this:
def get_before_after_rows(index):
rows_before = df[(index-1): (index-1)-2]
rows_after = df[(index 1): (index 1)-2]
return rows_before, rows_after
rows_before, rows_after = get_before_after_rows(index)
rows_before
column
0 1
1 2
4 5
rows_after
column
0 1
3 4
4 5
uj5u.com熱心網友回復:
你在混合iloc,loc這是非常危險的。它適用于您的示例,因為索引是從零開始的順序編號,因此這兩個函式是等效的。
無論如何,您想要的基本上是帶環繞的行:
def get_around(df: pd.DataFrame, index: int, n: int) -> (pd.DataFrame, pd.DataFrame):
"""Return n rows before and n rows after the specified positional index"""
idx = index - np.arange(1, n 1)
before = df.iloc[idx].sort_index()
idx = (index np.arange(1, n 1)) % len(df)
after = df.iloc[idx].sort_index()
return before, after
# Get 3 rows before and 3 rows after the *positional index* 2
before, after = get_around(df, 2, 3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/400745.html
上一篇:為什么“免費”說我的指標無效?
