我有一个如下所示的数据框
df = pd.DataFrame({'person_id': [101,101,101,101],
'sourcename':['test1','test2','test3','test4'],
'Test':[np.nan,np.nan,'B5','B6']})
我想要做的是从 non-na
列复制 Test
行并将其粘贴到 sourcename
列下的相应行
当我尝试以下操作时,它会将 sourcename
列的其他行设为 NA
df['sourcename'] = df.loc[df['Test'].notna()]['Test']
我希望我的输出如下所示
答案 0 :(得分:5)
答案 1 :(得分:1)
Series.fillna
的一个想法:
df['sourcename'] = df['Test'].fillna(df['sourcename'])
检查非缺失值的解决方案:
您已关闭,分配给按掩码过滤的行:
df.loc[df['Test'].notna(), 'sourcename'] = df['Test']
或者:
df['sourcename'] = np.where(df['Test'].notna(), df['Test'], df['sourcename'])