如何用Pandas将两个DataFrame行合并为新DataFrame的单行?
解决DataFrame匹配行合并为单行追加的问题
问题原因
你当前代码生成两行的核心原因是df1[i:i+1]和df2[j:j+1]的行索引不一致:pd.concat(axis=1)会按行索引对齐数据,当两个子DataFrame的行索引不同时,会生成多行(每行对应一个独立索引),最终append到full_data时就变成了两行。
修正方案
方案1:合并前重置行索引
先将取出的两行的索引统一重置为0,再横向合并成单行,最后追加到full_data:
# 取出目标行并重置索引(丢弃原索引) df1_row = df1[i:i+1].copy().reset_index(drop=True) df2_row = df2[j:j+1].copy().reset_index(drop=True) # 横向合并为单行 merged_single_row = pd.concat([df1_row, df2_row], axis=1) # 追加到full_data full_data = full_data.append(merged_single_row, ignore_index=True)
方案2:使用join方法合并(更简洁)
利用join方法直接合并两行,自动对齐索引(需重置其中一行的索引):
merged_single_row = df1[i:i+1].copy().join(df2[j:j+1].copy().reset_index(drop=True)) full_data = full_data.append(merged_single_row, ignore_index=True)
弃用方法提示
从pandas 1.4.0版本开始,DataFrame.append()已被标记为弃用,推荐使用pd.concat()替代追加操作,代码可修改为:
full_data = pd.concat([full_data, merged_single_row], ignore_index=True)
内容的提问来源于stack exchange,提问作者edwin marte
相关产品推荐
相关产品推荐

