我有一個資料框架,其中每個客戶的權重沒有得到很好的保持,導致:
該表是按CLIENT_ID和DATE_ENCOUNTER排序的。
我如何通過先向前填充條目,然后再向后填充,來替換每個CLIENT_ID的WEIGHT_KG=0.0的值?(根據每個CLIENT_ID的條目,這將導致一個資料框架,如下所示:
| CLIENT_ID | ENCOUNTER_DATE | WEIGHT_KG | |
|---|---|---|---|
| 16081 | 2018-12-17 | 70.0 | |
| 16081 | |||
| 16081 | 2019-03-19 | 70.0 | |
| 70.0 | |||
| 16081 | |||
| 16081 | 2019-04-18 | 70.0 | |
| 70.0 | |||
| 16081 | |||
| 16081 | 2019-06-07 | 2019-06-07 | 70.0 |
| 70.0 | |||
| 20011 | 2020-02-27 | 2020年2月27日 | 57.0 |
| 57.0 | |||
| 20011 | 2020-03-27 | 2020年3月27日 | 57.0 |
| 57.0 | |||
| 20011 | 2020-04-27 | 2020年4月27日 | 57.0 |
| 57.0 | |||
| 20011 | 2020-06-07 | 2020年6月7日 | 57.0 |
| 57.0 | |||
| 20011 | 2020-07-07 | 20011 | 60.0 |
| 60.0 | |||
| 20020 | 2020-01-01 | 2020-01-01 | 0.0 |
| 0.0 |
這里是生成df的代碼:
df = pd. DataFrame({"CLIENT_ID"/span>: [16081, 16081, 16081, 16081, 20011, 20011, 20011, 20011, 20020] 。
"ENCOUNTER_DATE"。['2018-12-17'/span>, '2019-03-19'/span>, '2019-04-18'/span>, '2019-06-07'/span>, '2020-02-27'/span>。'2020-03-27', '2020-04-27', '2020-06-07', '2020-07-07','2020-01-01'】。]
"WEIGHT_KG": [70, 0, 0, 0, 0, 0, 57, 0, 60, 0]})
uj5u.com熱心網友回復:
想法是將0替換為缺失值,然后每組使用forward和backfilling缺失值,最后將NaN替換為0:
df['WEIGHT_KG'] = (df['WEIGHT_KG'].replace(0, np.nan)
.groupby(df['CLIENT_ID'])
.transform(lambda x: x.ffill() .bfill() )
.fillna(0) )
或者:
df['WEIGHT_KG'] = (df['WEIGHT_KG'] 。 where(df['WEIGHT_KG'].ne(0)
.groupby(df['CLIENT_ID'] )
.transform(lambda x: x.ffill().bfill())
.fillna(0) )
print (df)
client_id encounter_date weight_kg
0 16081 2018-12-17 70.0
1 16081 2019-03-19 70.0
2 16081 2019-04-18 70.0
3 16081 2019-06-07 70.0[/span
4 20011 2020-02-27 57.0[/span
5 20011 2020-03-27 57.0
6 20011 2020-04-27 57.0
7 20011 2020-06-07 57.0[/span
8 20011 2020-07 60.0
9 20020 2020-01-01 0.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/307650.html
標籤:
上一篇:總結出2個具有納米值的資料幀
下一篇:按計算熊貓分組
