如何为Pandas DataFrame新增多列并批量添加多行数据?
批量为Pandas DataFrame添加多列并赋值的解决方案
你需要给现有DataFrame批量添加模型输出的多列,之前的尝试因为数据结构不匹配报错,下面是几种可行的方法:
错误原因说明
你写的df[['col3', 'col4']] = [[1,2,3,4,5],[1,2,3,4,5]],传入的是两个长度为5的列表,相当于2行数据,但你的DataFrame有5行,Pandas期望的是5行、每行对应2个新列的值,维度不匹配导致报错。而df['col3', 'col4']这种写法会创建一个多级索引的单列,并非两列,所以会提示长度不匹配。
正确的批量赋值方法
方法1:调整数据结构为每行对应新列值
直接把数据改成每行包含两个新列数值的结构,Pandas会自动对应列赋值:
import pandas as pd df = pd.DataFrame({'col1':[1,2,3,4,5], 'col2':[1,2,3,4,5]}) # 每行对应col3和col4的数值 df[['col3', 'col4']] = [[1,1], [2,2], [3,3], [4,4], [5,5]]
方法2:转置现有行式数据
如果模型输出是按列返回的(比如两个长度为5的数组),可以用pd.DataFrame转置后匹配行结构:
# 模型返回的两个结果数组 output_col3 = [1,2,3,4,5] output_col4 = [1,2,3,4,5] # 转置后赋值 df[['col3', 'col4']] = pd.DataFrame([output_col3, output_col4]).T
方法3:用pd.concat拼接新列
把新列单独做成小DataFrame,再和原DataFrame横向拼接:
new_cols = pd.DataFrame({ 'col3': [1,2,3,4,5], 'col4': [1,2,3,4,5] }) df = pd.concat([df, new_cols], axis=1)
方法4:直接用二维数组赋值(适配模型输出)
如果机器学习模型返回的是二维数组(格式为(样本数, 输出列数),这里是(5,2)),可以直接赋值:
import numpy as np # 模拟模型输出的二维数组 model_output = np.array([[1,1], [2,2], [3,3], [4,4], [5,5]]) df[['col3', 'col4']] = model_output
内容的提问来源于stack exchange,提问作者David Siret Marquès
相关产品推荐
相关产品推荐

