如何高效将DataFrame内的类对象替换为其对应属性值
解决方案
这里提供两种远优于手动逐行逐列遍历的高效实现,均基于pandas原生优化的向量化操作:
方案1:applymap 逐元素处理(中小规模数据首选,写法最简)
所有列均为目标格式时,一行代码即可完成转换:
df = df.applymap(lambda item: (item[0], item[1].name))
如果仅部分列需要处理,指定目标列即可:
# 按需替换为你要处理的列名列表 target_cols = ["id1", "id2", "id3"] df[target_cols] = df[target_cols].applymap(lambda item: (item[0], item[1].name))
该方法的循环逻辑在C层实现,比Python层手写双重遍历效率高1~2个数量级。
方案2:stack+map+unstack(超大规模数据性能更优)
如果你处理的是十万行以上的大表,可以用栈化操作进一步降低函数调用开销:
df = df.stack().map(lambda item: (item[0], item[1].name)).unstack()
结果验证
你可以先抽单个元素确认转换逻辑是否符合预期:
print(df["id1"][0]) # 输出为 (0, 'type1') 即说明逻辑正确
内容的提问来源于stack exchange,提问作者Maxi Trien
相关产品推荐
相关产品推荐

