首页 > 解决方案 > Python Pandas:根据其他空白列的条件使用 ffill

问题描述

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

如何根据名为“Rec”的空白列使用 ffill。因此,如果此列为空白,则在“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 |
+--------+----------+----------------------------+---------+-----------+

非常感激你的帮助!

标签: pythonpython-3.xpandas

解决方案


IIUC,您可以尝试将Loc1andLoc值更改为NaNif the Reccolumn is NaN,然后ffill在整个 DataFrame 上使用。

尝试这个:

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

推荐阅读