You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于多个同结构DataFrame指定列创建新DataFrame?操作报错求助

问题分析与解决方案

你的代码问题根源

  1. 对象类型初始化错误:df1['parameter1']返回的是Pandas Series(一维序列),而非DataFrame。直接给Series新增列会触发Pandas警告或报错,赋值操作也不会按预期生效,这是你得到异常结果的核心原因。
  2. 索引对齐隐患:如果三个原DataFrame的索引不匹配,直接列相加会自动对齐索引,缺失位置会生成NaN,若后续处理不当就会出现类似全0的异常值。

正确实现代码

方案一:基础单列运算版

# 1. 创建包含parameter1列的DataFrame(用双层方括号确保返回DataFrame而非Series)
resultingdataframe = df1[['parameter1']].copy()
# 2. 添加parameter2求和列,自动对齐索引
resultingdataframe['parameter2'] = df1['parameter2'] + df2['parameter2'] + df3['parameter2']
  • .copy()用于避免触发SettingWithCopyWarning,防止原DataFrame被意外修改。
  • 若无需索引对齐,想直接按位置相加,可改用数组运算:
resultingdataframe['parameter2'] = df1['parameter2'].to_numpy() + df2['parameter2'].to_numpy() + df3['parameter2'].to_numpy()

方案二:批量自定义运算版

如果后续还要处理多列自定义操作,可先合并再聚合:

# 合并三个DataFrame的目标列
combined = pd.concat([
    df1[['parameter1', 'parameter2']],
    df2[['parameter2']],
    df3[['parameter2']]
], axis=1)

# 对所有parameter2列求和,生成结果DataFrame
resultingdataframe = combined.assign(
    parameter2=combined.filter(like='parameter2').sum(axis=1)
)[['parameter1', 'parameter2']]

内容的提问来源于stack exchange,提问作者Lala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 08:47:22