Python 复制非na行以使用熊猫填充非na列
我有一个如下所示的数据帧Python 复制非na行以使用熊猫填充非na列,python,pandas,dataframe,series,na,Python,Pandas,Dataframe,Series,Na,我有一个如下所示的数据帧 df = pd.DataFrame({'person_id': [101,101,101,101], 'sourcename':['test1','test2','test3','test4'], 'Test':[np.nan,np.nan,'B5','B6']}) 我想做的是从Test列复制non-na行,并将其粘贴到sourcename列下的相应行中 df['source
df = pd.DataFrame({'person_id': [101,101,101,101],
'sourcename':['test1','test2','test3','test4'],
'Test':[np.nan,np.nan,'B5','B6']})
我想做的是从Test
列复制non-na
行,并将其粘贴到sourcename
列下的相应行中
df['sourcename'].update(df['Test'])
当我尝试下面的方法时,它将sourcename
列的其他行设置为NA
df['sourcename'] = df.loc[df['Test'].notna()]['Test']
我希望我的输出如下所示
df = pd.DataFrame({'person_id': [101,101,101,101],
'sourcename':['test1','test2','test3','test4'],
'Test':[np.nan,np.nan,'B5','B6']})
一个想法包括:
具有检查非缺失值的解决方案:
如果已关闭,请分配给按掩码筛选的行:
df.loc[df['Test'].notna(), 'sourcename'] = df['Test']
或:
我们可以使用Test
列中的non-NaN
值更新sourcename
列中的值
df['sourcename'].update(df['Test'])
这两种解决方案都非常好,我非常感谢耶斯雷尔和舒巴姆。然而,我只能将一个解决方案标记为答案。因此,在不涉及代码的复杂细节的情况下,我将把Jezrael代码标记为所建议的多种解决方案的答案。再次感谢你们的帮助。除非Shubham和Jezrael更喜欢另一个更好的解决方案,否则我可以将其标记为解决方案。我不会深入到诸如速度、性能等复杂的代码细节中,因为我对此一无所知。再次感谢你的帮助
>>> df
person_id sourcename Test
0 101 test1 NaN
1 101 test2 NaN
2 101 B5 B5
3 101 B6 B6