使用 pandas 复制非 na 行以填充非 na 列
Copy non-na rows to fill non-na columns using pandas
我有一个如下所示的数据框
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
列
下的相应行中
当我尝试下面的操作时,它使 sourcename
列的其他行成为 NA
df['sourcename'] = df.loc[df['Test'].notna()]['Test']
我希望我的输出如下所示
一个想法 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'])
Series.update
我们可以 update
sourcename
列中的值与 Test
列
中的 non NaN
值
df['sourcename'].update(df['Test'])
>>> df
person_id sourcename Test
0 101 test1 NaN
1 101 test2 NaN
2 101 B5 B5
3 101 B6 B6
我有一个如下所示的数据框
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
列
当我尝试下面的操作时,它使 sourcename
列的其他行成为 NA
df['sourcename'] = df.loc[df['Test'].notna()]['Test']
我希望我的输出如下所示
一个想法 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'])
Series.update
我们可以 update
sourcename
列中的值与 Test
列
non NaN
值
df['sourcename'].update(df['Test'])
>>> df
person_id sourcename Test
0 101 test1 NaN
1 101 test2 NaN
2 101 B5 B5
3 101 B6 B6