如何合并pandas DataFrame与Series且合并结果无NaN值
实现方案
方案1:使用assign方法(最简洁,不修改原DataFrame)
直接对Series解包作为assign的参数,pandas会自动将标量值广播到所有行:
result = df1.assign(**s1)
该方案代码量最少,返回新的DataFrame,不会改动原有的df1,适合绝大多数场景。
方案2:直接遍历赋值(会修改原DataFrame)
如果允许修改原有df1,可以直接遍历Series的键值对给DataFrame新增列:
for col_name, value in s1.items(): df1[col_name] = value # 此时df1就是合并后的结果
该方案逻辑直观,适合需要直接修改原数据的场景。
方案3:使用concat合并
如果更习惯用拼接逻辑,可以先将Series转为单行DataFrame,再重复行和原DataFrame对齐后拼接:
# 将Series转为单行DataFrame,重复和df1行数一致的次数 s_df = s1.to_frame().T.reindex(df1.index, method="ffill") result = pd.concat([df1, s_df], axis=1)
该方案适合后续需要扩展拼接逻辑的场景。
内容的提问来源于stack exchange,提问作者user16017809
相关产品推荐
相关产品推荐

