我在“revenues_from_appointment”列中有一個包含空值的資料集
資料集
| 約會日期 | 患者編號 | 從業者_id | 約會時間_分鐘 | 收入_來自_約會 |
|---|---|---|---|---|
| 2021-06-28 | 42734 | 748 | 30 | 90.0 |
| 2021-06-29 | 42737 | 747 | 60 | 150.0 |
| 2021-07-01 | 42737 | 747 | 60 | 鈉 |
| 2021-07-03 | 42736 | 748 | 30 | 60.0 |
| 2021-07-03 | 42735 | 747 | 15 | 42.62 |
| 2021-07-04 | 42734 | 748 | 30 | 鈉 |
| 2021-07-05 | 42734 | 748 | 30 | 100.0 |
| 2021-07-10 | 42738 | 747 | 15 | 50.72 |
| 2021-08-12 | 42739 | 748 | 30 | 73.43 |
我希望將 NULL 值替換為“ patient_id、practice_id、約會_duration_min ”相同的行的平均值。
我使用熊貓資料框做到了,
df['revenues_from_appointment'].fillna(df.groupby(['patient_id','practitioner_id','appointment_duration_min'])['revenues_from_appointment'].transform('mean'), inplace = True)
我們如何使用 SQL 獲得相同的結果?
最終輸出
| 約會日期 | 患者編號 | 從業者_id | 約會時間_分鐘 | 收入_來自_約會 |
|---|---|---|---|---|
| 2021-06-28 | 42734 | 748 | 30 | 90.0 |
| 2021-06-29 | 42737 | 747 | 60 | 150.0 |
| 2021-07-01 | 42737 | 747 | 60 | 150.0 |
| 2021-07-03 | 42736 | 748 | 30 | 60.0 |
| 2021-07-03 | 42735 | 747 | 15 | 42.62 |
| 2021-07-04 | 42734 | 748 | 30 | 95.0 |
| 2021-07-05 | 42734 | 748 | 30 | 100.0 |
| 2021-07-10 | 42738 | 747 | 15 | 50.72 |
| 2021-08-12 | 42739 | 748 | 30 | 73.43 |
uj5u.com熱心網友回復:
您可以使用AVG視窗函式,它將在感興趣的三列上進行磁區并使用該COALESCE函式替換空值:
SELECT appointment_date,
patient_id,
practitioner_id,
appointment_duration_min,
COALESCE(revenues_from_appointment,
AVG(revenues_from_appointment) OVER(PARTITION BY patient_id,
practitioner_id,
appointment_duration_min))
FROM tab
在這里試試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484682.html
