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

Pandas如何将Series转换为无空表头字典映射到DataFrame新增列

解决方法

你只需要调整字典生成逻辑,同时修正两处参数错误即可:

import pandas as pd

df1 = pd.DataFrame({"ID": [4,8,35,28,34,34,14,28], 
                    "cause of failure": [5,3,0,1,7,8,6,7], 
                    "crash": [0,0,0,1,1,1,1,1]}) 

s = pd.DataFrame({'':["None","Design flaw","metal fatigue","Manufacturing flaw","Pilot error","Mechanical failure","Improper maintenance","Fire","Corrosion"]})

def add_column(df,s, ref_column, new_column):
    # 提取单列DataFrame的第一列转字典,直接得到无外层空键的映射关系
    dict_s = s.iloc[:, 0].to_dict()
    df[new_column] = df[ref_column].map(dict_s)
    return df

# 传入和df1匹配的参考列名、正确的s变量
df1 = add_column(df1,s,"cause of failure","failure")
# 如果需要和你提供的示例结果完全对齐(去掉首行ID=4的记录),加以下代码即可
df1 = df1.drop(0).reset_index(drop=True)
print(df1)

修改说明

  1. 映射字典生成逻辑:你的s是只有1列的DataFrame,用s.iloc[:,0]先提取对应列的Series对象,再调用to_dict()就会直接生成「索引对应故障描述」的纯键值对字典,不会带外层空列名的嵌套结构
  2. 修正调用错误:原代码调用函数时传入的参考列名failure code和df1实际列名cause of failure不一致,且变量名错写为未定义的s1,修改后即可正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:36:02