如何根据条件将一列值移动到熊猫中的另一列值

乘风 python 198

原文标题How to move one column values to another in pandas base on condition

我的数据框如下

df = pd.DataFrame({'name':['a', 'b', 'c', 'd'],
        'per1':[np.nan, 'sa1', 'sa2', np.nan],
        'per2':['sa3', 'sa2', 'sa2', 'sa4']})

看起来像:

name  per1  per2

a     NaN   sa3
b     sa1   sa2
c     sa2   sa2
d     NaN   sa4

我想通过将per2列值移动到具有空值的per1来转换为下面的结果。

name  per1  per2

a     sa3  
b     sa1  sa2
c     sa2  sa2
d     sa4  

我试过这个,但它复制了 per2 列值。

df['per1']=df['per1'].fillna(df['per2'])

原文链接:https://stackoverflow.com//questions/71476859/how-to-move-one-column-values-to-another-in-pandas-base-on-condition

回复

我来回复
  • enke的头像
    enke 评论

    你可以使用loc

    msk = df['per1'].isna()
    df.loc[msk, ['per1', 'per2']] = df.loc[msk, ['per2', 'per1']].to_numpy()
    

    输出:

      name per1 per2
    0    a  sa3  NaN
    1    b  sa1  sa2
    2    c  sa2  sa2
    3    d  sa4  NaN
    
    2年前 0条评论