我正在嘗試使用 group by 獲取高于值的所有空行。
因此,例如給出以下資料框。
---- ------------ ----------- -------- ---------- -------- ----------
| ID | Start Date | End Date | Date_D | D-Values | Date_R | R-Values |
---- ------------ ----------- -------- ---------- -------- ----------
| A | 2/26/2015 | 5/26/2015 | JAN_15 | - | 15-Jan | - |
| A | 2/26/2015 | 5/26/2015 | FEB_15 | - | 15-Feb | - |
| A | 2/26/2015 | 5/26/2015 | MAR_15 | - | 15-Mar | - |
| A | 2/26/2015 | 5/26/2015 | APR_15 | - | 15-Apr | - |
| A | 2/26/2015 | 5/26/2015 | MAY_15 | -28 | 15-May | 15000 |
| A | 2/26/2015 | 5/26/2015 | JUN_15 | - | 15-Jun | - |
| A | 2/26/2015 | 5/26/2015 | JUL_15 | - | 15-Jul | - |
| A | 2/26/2015 | 5/26/2015 | AUG_15 | - | 15-Aug | - |
---- ------------ ----------- -------- ---------- -------- ----------
我想要的輸出看起來像這樣。
---- ------------ ----------- -------- ---------- -------- ----------
| ID | Start Date | End Date | Date_D | D-Values | Date_R | R-Values |
---- ------------ ----------- -------- ---------- -------- ----------
| A | 2/26/2015 | 5/26/2015 | FEB_15 | - | 15-Feb | - |
| A | 2/26/2015 | 5/26/2015 | MAR_15 | - | 15-Mar | - |
| A | 2/26/2015 | 5/26/2015 | APR_15 | - | 15-Apr | - |
| A | 2/26/2015 | 5/26/2015 | MAY_15 | -28 | 15-May | 15000 |
---- ------------ ----------- -------- ---------- -------- ----------
編輯
有多個 ID,因此需要在多個客戶上實施。想要基于開始日期和結束日期的行,例如從 Feb_15 開始選擇行,直到日期范圍內的最后一個非空值。
uj5u.com熱心網友回復:
使用DataFrame.isna()andSeries.cumprod()先檢查不為空:
df[df[['D-Values','R-Values']]
#.replace('-', np.nan) # if necessary
.isna()
.any(axis=1)
.groupby(df['ID'])
.cumprod()
.groupby(df['ID'])
.shift(fill_value=True)
.astype(bool)
& df['Date_D'].eq('FEB_15')
#.groupby(df['ID']) # BY ID
.cummax()
.eq(1)
]
uj5u.com熱心網友回復:
你可以transform做idxmax
idx = df[['D-Values','R-Values']].notna().all(1).groupby(df["ID"]).transform('idxmax')
out = df[df.index <= idx]
uj5u.com熱心網友回復:
IIUC,您想用“-”洗掉最后一行,并假設“D-values”參考列。
cummax您可以在反向布爾陣列上計算 a :
mask = df['D-Values'].ne('-').iloc[::-1].cummax()
# or, for NaNs:
# mask = df['D-Values'].notna().iloc[::-1].cummax()
df2 = df[mask]
輸出:
ID Start Date End Date Date_D D-Values Date_R R-Values
0 A 1/26/2015 5/26/2015 JAN_15 - 15-Jan -
1 A 1/26/2015 5/26/2015 FEB_15 - 15-Feb -
2 A 1/26/2015 5/26/2015 MAR_15 - 15-Mar -
3 A 1/26/2015 5/26/2015 APR_15 - 15-Apr -
4 A 1/26/2015 5/26/2015 MAY_15 -28 15-May 15000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434727.html
標籤:熊猫 数据框 熊猫-groupby
