如何将同尺寸的多列Pandas DataFrame追加至现有DataFrame右侧?
Pandas复制DataFrame并追加到右侧列的实现方法
问题场景
你需要复制现有DataFrame并将副本添加到原DataFrame的右侧列,但使用insert方法处理多列DataFrame时触发ValueError: cannot insert 6, already exists错误,原因是insert仅支持单次插入一列。
原始DataFrame:
import pandas as pd df = pd.DataFrame({'0': 6*['p'], '1': 6*['p']}) # 输出: # 0 1 # 0 p p # 1 p p # 2 p p # 3 p p # 4 p p # 5 p p
预期结果:
0 1 2 3 0 p p p p 1 p p p p 2 p p p p 3 p p p p 4 p p p p 5 p p p p
解决方案(无需NumPy)
方法1:使用pd.concat(推荐)
通过按列拼接原DataFrame和其副本实现,可自定义新列名避免重复:
import pandas as pd # 原DataFrame df = pd.DataFrame({'0': 6*['p'], '1': 6*['p']}) # 复制副本 df_copy = df.copy() # 重命名副本列名,使其为原列名+原列数 df_copy.columns = [str(int(col) + len(df.columns)) for col in df_copy.columns] # 按列拼接 result = pd.concat([df, df_copy], axis=1) print(result)
如果不需要严格递增的数字列名,可跳过重命名步骤,Pandas会自动给重复列名添加后缀(如0→0.1)。
方法2:批量赋值新增列
遍历副本的列,逐个添加到原DataFrame右侧,手动指定新列名:
import pandas as pd df = pd.DataFrame({'0': 6*['p'], '1': 6*['p']}) df_copy = df.copy() current_col_count = len(df.columns) for idx, col in enumerate(df_copy.columns): # 按原列数+索引生成新列名 df[str(current_col_count + idx)] = df_copy[col] print(df)
内容的提问来源于stack exchange,提问作者brucey
相关产品推荐
相关产品推荐

