我有一個看起來像這樣的資料框:
| 最終檢查 |
|---|
| 錯誤的 |
| 真的 |
| 真的 |
| 真的 |
| 錯誤的 |
| 真的 |
我想在這個資料框中創建另一列,它給我一個基于 finalcheck 變數的累積總和,如下所示:
| 最終檢查 | 位置 |
|---|---|
| 錯誤的 | 1 |
| 真的 | 2 |
| 真的 | 3 |
| 真的 | 4 |
| 錯誤的 | 1 |
| 真的 | 2 |
我已經嘗試了多種方法來實作這一點,但我能得到的最接近的方法是在 pandas 中使用帶有 cumsum 函式的 groupby:
df['position'] = df.groupby((df.finalcheck).cumsum())
這沒有給我想要的輸出。你能幫我確定我哪里出錯了嗎?
uj5u.com熱心網友回復:
這是一個孤島問題。每次遇到 False 時,您都會開始一個新的島嶼。然后在每個島內,您只需按順序對行進行編號:
# The islands
s = df["finalcheck"].eq(False).cumsum()
# Within each island, label the rows sequentially
df['position'] = s.groupby(s).cumcount() 1
uj5u.com熱心網友回復:
summ = 0
for i in range(0,len(df)):
if df["finalcheck"].iloc[i] == "True":
summ = summ 1
df["position"].iloc[i] = summ
else:
summ = 0
如果你在 groupby 之外思考,你可以試試這個
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450711.html
