使用 Pandas 复制非 na 行以填充非 na 列

时间:2021-04-14 07:31:52

标签: 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']})

我想要做的是从 non-na 列复制 Test 行并将其粘贴到 sourcename 列下的相应行

当我尝试以下操作时,它会将 sourcename 列的其他行设为 NA

df['sourcename'] = df.loc[df['Test'].notna()]['Test']

我希望我的输出如下所示

enter image description here

2 个答案:

答案 0 :(得分:5)

Series.update

我们可以使用 update 列中的 sourcenamenon NaN 列中的值

Test

df['sourcename'].update(df['Test'])

答案 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'])