我有如下所示的 Dataframe df:对于每一行,如果第一个找到的列值为 None,则应将其替换为 DataFrame 中的第 2 列值。 ID 1 2 col0 col1 col2 col3 col4 col5 col60 A1 ABC RED 10 20 None None None None None1 B1 ABC ORANGE 40 None None None None None None2 C1 ABC WHITE 50 34 35 57 78 98 None3 D1 ABC BLUE 20 None None None None None None我想要输出:ID 1 col0 col1 col2 col3 col4 col5 col60 A1 ABC 10 20 RED1 B1 ABC 40 ORANGE2 C1 ABC 50 34 35 57 78 98 WHITE3 D1 ABC 20 BLUE
1 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
想法是用 limit 参数向前填充非缺失值,测试非缺失值并用测试缺失值链 - 所以掩码只匹配s 用于从列中None
追加值,最后用空字符串替换 s :2
DataFrame.mask
DataFrame.pop
None
DataFrame.fillna
m = df.ffill(axis=1, limit=1).notna() & df.isna() df = df.mask(m, df.pop(2), axis=0).fillna('')print (df) ID 1 col0 col1 col2 col3 col4 col5 col60 A1 ABC 10 20 RED 1 B1 ABC 40 ORANGE 2 C1 ABC 50 34 35 57 78 98 WHITE3 D1 ABC 20 BLUE
添加回答
举报
0/150
提交
取消