【发布时间】:2022-01-22 07:25:44
【问题描述】:
我有一个如下所示的数据框
df = pd.DataFrame(
{'sub_code' : [np.nan, 'CSE01', np.nan,
'CSE02', 'CSE03', 'CSE02',
'CSE03', 'CSE02'],
'stud_level' : [101, 101, 101, 101,
101, 101, 101, 101],
'grade' : ['STA','STA','PSA','STA','STA','SSA','PSA','QSA']})
我想做下面的事情
a) 通过引用grade 列在sub_code 列中填写NA。
b) 例如:等级STA 在row 1,3 and 4 (row 0 has NA value) 中有对应的sub_code 非NA 值
c) 从 grade 列复制第一个非 NA (CSE01) 值并将其放入 sub_code 列 (row 0)
我尝试了以下
m = df['sub_code'].isna()
df.loc[m, 'sub_code'] = np.where(df.loc[m, 'grade'].ne(np.nan), df['sub_code'], 'not filled')
我希望我的输出如下所示
【问题讨论】:
标签: python pandas dataframe numpy fillna