我需要根據指標的值計算累積計算(總和、平均值、中位數等)
它應該對所有虛假指標進行計算,并將其列印在與真實指標相鄰的位置。然后計算值應重置并從 true 開始,直到指標再次出現 true。
輸入資料框
| 數量 | 指標 |
|---|---|
| 10 | 錯誤的 |
| 20 | 錯誤的 |
| 5 | 真的 |
| 8 | 錯誤的 |
| 4 | 錯誤的 |
| 6 | 真的 |
輸出將是
| 數量 | 指標 | 和 | 意思是 |
|---|---|---|---|
| 10 | 錯誤的 | ||
| 20 | 錯誤的 | ||
| 5 | 真的 | 30 | 15 |
| 8 | 錯誤的 | ||
| 4 | 錯誤的 | ||
| 6 | 真的 | 17 | 5.6 |
我嘗試將 groupby 與 cumsum() 一起使用,使用 Indicator 作為 group ,但還沒有任何運氣。
uj5u.com熱心網友回復:
一口氣只使用一個 groupby:
df[["Sum", "Mean"]] = np.NaN
df.loc[df.Indicator, ["Sum", "Mean"]] = (df.groupby(df.Indicator.cumsum())
.agg({"Amount": ["sum", "mean"]})
.shift(1).iloc[1:].values)
uj5u.com熱心網友回復:
讓我們使用cumsum列Indicator作為組鍵來獲取Amount列的 cumsum 和大小
m = df['Indicator'].cumsum()
df['Sum'] = df.groupby(m)['Amount'].cumsum().shift().where(df['Indicator'])
df['Mean'] = df['Sum'].shift(-1).div(df.groupby(m)['Amount'].transform('size')).shift()
print(df)
Amount Indicator Sum Mean
0 10 False NaN NaN
1 20 False NaN NaN
2 5 True 30.0 15.000000
3 8 False NaN NaN
4 4 False NaN NaN
5 6 True 17.0 5.666667
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/519627.html
標籤:Python熊猫麻木的
上一篇:如何使用Numpy創建如下矩陣
