基于列中的某些存在,更新另一个数据帧pandas中的其他列

时间:2017-12-11 10:45:43

标签: python pandas dataframe

我有以下数据框,

Index   Col1    Col2  Col3   Col4
IDX1    MN      ABC   SHUITY
IDX2    CA      DAC   HUI
IDX3    IX      AAA   None
IDX4    JN      HSY   JHYW
IDX5    MO      AAA   None
IDX6    MN      AAA   None
IDX7    CA      AJDH        JDUE
IDX8    JX      SJYW        JSI

请注意,AAA的值col3时,None中的相应col值为Col4。我想将其替换为AAA中的Col4。我该怎么做?

1 个答案:

答案 0 :(得分:1)

IIUC,您可以使用np.where -

执行此操作
df['Col4'] = np.where(df.Col2 == 'AAA', 'AAA', '')
df

  Index Col1  Col2    Col3 Col4
0  IDX1   MN   ABC  SHUITY     
1  IDX2   CA   DAC     HUI     
2  IDX3   IX   AAA    None  AAA
3  IDX4   JN   HSY    JHYW     
4  IDX5   MO   AAA    None  AAA
5  IDX6   MN   AAA    None  AAA
6  IDX7   CA  AJDH    JDUE     
7  IDX8   JX  SJYW     JSI 

Col4可能已经有了一些值。在这种情况下,需要稍作修改。

df['Col4'] = np.where(df.Col2 == 'AAA', 'AAA', df.Col4)

如果单元格不需要重新分配,则保留相同的值。

或者,您可以使用loc -

进行更新
df.loc[df.Col2 == 'AAA', 'Col4'] = 'AAA'