如何提取DataFrame指定行并填充至另一DataFrame所有行?
问题分析与解决方法
错误原因
你用的df2.apply(lambda _: df2.iloc[1], axis=1)是遍历df2的每一行,生成一个和df2行数一致的DataFrame。如果df1和df2行数不相等,pd.concat会按索引对齐拼接,行数少的DataFrame对应的多余行就会填充NaN。哪怕你示例里两者都是9行,这种写法也属于绕远路的低效操作,完全没必要。
正确解法
方法1:直接重复目标行后拼接
提取df2的目标行,重复df1的行数后和df1拼接,逻辑直观:
# 提取df2索引为1的行,重复df1的行数并转为DataFrame target_row_df = pd.DataFrame([df2.iloc[1]] * len(df1), columns=df2.columns) # 横向拼接得到df3 df3 = pd.concat([df1, target_row_df], axis=1)
方法2:用assign直接添加列(更简洁高效)
利用assign方法直接给df1添加新列,自动将目标行的值填充到所有行:
df3 = df1.assign(**df2.iloc[1])
这个写法不需要额外生成重复行的DataFrame,代码更简洁,执行效率也更高。
内容的提问来源于stack exchange,提问作者Ssong
相关产品推荐
相关产品推荐

