Python Pandas:根据其他空白列的条件使用填充

时间:2021-07-16 04:53:54

标签: python python-3.x pandas

当时我尝试了 group ffill,但没有任何效果。 :(

如何基于名为“Rec”的空白列使用填充。因此,如果此列为空,则在“Rec”列上填充先前的值,然后将“Loc1”和 Loc 也替换为先前的值?

这是我的 df:

+--------+----------+----------------------------+---------+------------+
| Lot    | Rec      | Part                       | Loc1    | Loc        |
+--------+----------+----------------------------+---------+------------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM  |
+--------+----------+----------------------------+---------+------------+
| Y19105 |          | PHEMT6_BGATE_70NM_EBEAM.05 | B_PC    | B_PC_STOCK |
+--------+----------+----------------------------+---------+------------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM  |
+--------+----------+----------------------------+---------+------------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM  |
+--------+----------+----------------------------+---------+------------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM  |
+--------+----------+----------------------------+---------+------------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM  |
+--------+----------+----------------------------+---------+------------+
| Y19105 |          | PHEMT6_BGATE_70NM_EBEAM.05 | B_PC    | B_PC_STOCK |
+--------+----------+----------------------------+---------+------------+
| Y19105 |          | PHEMT6_BGATE_70NM_EBEAM.05 | B_PC    | B_PC_STOCK |
+--------+----------+----------------------------+---------+------------+
| Y19105 |          | PHEMT6_BGATE_70NM_EBEAM.05 | B_PC    | B_PC_STOCK |
+--------+----------+----------------------------+---------+------------+

我想要的输出:

+--------+----------+----------------------------+---------+-----------+
| Lot    | Rec      | Part                       | Loc1    | Loc       |
+--------+----------+----------------------------+---------+-----------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM |
+--------+----------+----------------------------+---------+-----------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM |
+--------+----------+----------------------------+---------+-----------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM |
+--------+----------+----------------------------+---------+-----------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM |
+--------+----------+----------------------------+---------+-----------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM |
+--------+----------+----------------------------+---------+-----------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM |
+--------+----------+----------------------------+---------+-----------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM |
+--------+----------+----------------------------+---------+-----------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM |
+--------+----------+----------------------------+---------+-----------+
| Y19105 | BIPA6.02 | PHEMT6_BGATE_70NM_EBEAM.05 | B_EBEAM | B_F_EBEAM |
+--------+----------+----------------------------+---------+-----------+

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

IIUC 如果 Loc1 列是 Loc,您可以尝试将 NaNRec 值更改为 NaN,然后使用 ffill在整个 DataFrame 上。

试试这个:

df.loc[df['Rec'].isnull(), ['Loc1', 'Loc']] = np.nan
df.ffill()