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

Python中为何输出<map object at...>?Pandas处理CSV遇此问题求助

解决Pandas中map返回对象而非实际值的问题

嘿,我刚学Pandas的时候也踩过这个坑!你看到的<map object at ...>是因为在Python 3里,map()函数返回的是一个迭代器对象,而不是直接生成列表——Pandas没法把这个迭代器直接解析成DataFrame的列值,所以就显示了对象的内存地址。

下面给你几种简单的修复方案,按需选择就行:

方案1:把map对象转为列表

最简单的修复方式就是用list()把map迭代器转换成Pandas能识别的列表,直接修改你原代码的最后一行:

csv_file = pd.read_csv("C:\\location-of-csv\\sample-csv.csv")
def update_measure(data):
    return data.split('_', 1)[1]
# 把map结果转为列表
csv_file['UpdatedMeasurement'] = list(map(update_measure, csv_file['Measurement']))
print(csv_file.head())

方案2:使用Pandas的apply()方法(更推荐)

其实Pandas本身就有专门处理Series元素级操作的方法——apply(),它会自动遍历每个元素并应用你的函数,比map+list更符合Pandas的使用习惯,代码也更易读:

csv_file = pd.read_csv("C:\\location-of-csv\\sample-csv.csv")
def update_measure(data):
    return data.split('_', 1)[1]
# 用apply替代map
csv_file['UpdatedMeasurement'] = csv_file['Measurement'].apply(update_measure)
print(csv_file.head())

方案3:用Pandas字符串方法(最高效)

如果你的操作只是字符串分割,完全不需要自定义函数,直接用Pandas内置的str.split()方法,速度更快,代码也更简洁:

csv_file = pd.read_csv("C:\\location-of-csv\\sample-csv.csv")
# 直接用str.split分割,取第二个部分
csv_file['UpdatedMeasurement'] = csv_file['Measurement'].str.split('_', n=1).str[1]
print(csv_file.head())

这里的n=1表示只分割一次,和你自定义函数里的split('_',1)效果一致,str[1]就是取分割后的第二个元素。

不管用哪种方法,运行后你再打印csv_file.head(),就能看到UpdatedMeasurement列显示的是你想要的分割后的值,而不是map对象啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:45:00