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

pandas新增列时报'DataFrame' object has no attribute 'map'如何解决?

报错原因

map是pandas Series 独有的方法,你的label变量现在是DataFrame类型,自然没有这个属性,才会触发报错。
你代码里的核心问题有两个:

  • 重复读取同一个train.csv文件毫无必要,第一次读取后就可以直接从train_df里提取需要的列
  • 你读取的train.csv本身有多列,就算加了squeeze=True参数,也不会自动转为Series,所以返回的还是DataFrame

修复方案

方案1:直接从已读取的train_df中提取标签列

如果标签本身就是train.csv里的某一列(比如最后一列),直接提取即可:

import pandas as pd
# 只需要读取一次csv
train_df = pd.read_csv("/content/drive/My Drive/data/HumanActivity/data/train.csv")
# 假设标签是train_df的最后一列
label = train_df.iloc[:, -1]
label_name = label.map({1: "WALKING", 2:"WALKING_UPSTAIRS", 3:"WALKING_DOWNSTAIRS", 4:"SITTING", 5:"STANDING", 6:"LYING"})
# 把转换好的标签名新增到数据集
train_df["label_name"] = label_name

方案2:确实需要单独读标签文件的情况

如果标签是单独的文件,首先确认你路径写对了(你现在所有读文件路径都是同一个train.csv,大概率是路径写错了,比如标签文件路径应该是y_train.csv/train_labels.txt这类),读取后可以主动转成Series再调用map:

# 读单列文件后主动转Series
label = pd.read_csv("你的标签文件正确路径", header=None).squeeze()
# 或者取第一列转Series
label = pd.read_csv("你的标签文件正确路径", header=None).iloc[:, 0]
label_name = label.map({1: "WALKING", 2:"WALKING_UPSTAIRS", 3:"WALKING_DOWNSTAIRS", 4:"SITTING", 5:"STANDING", 6:"LYING"})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:48:01