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

遍历DataFrame列名创建新DataFrame时TypeError报错的技术咨询

解决DataFrame列遍历与新DataFrame构建的报错问题

嘿,这个报错的原因很明确——你一开始把new_df初始成了列表[],但列表只能用整数或者切片来索引,根本没法用列名(字符串)当索引,所以new_df[name]自然就抛出TypeError了。哪怕改成new_df[[name]]也没用,因为列表依然不支持这种索引方式。

下面给你两种靠谱的解决办法,按需选择:

方法1:用字典过渡(直观易理解)

把new_df初始化为空字典,字典允许用字符串作为键,正好对应列名。循环处理完所有列后,再把字典转换成DataFrame:

import pandas as pd

new_df = {}  # 这里换成字典,不是列表!
for name in df.columns:  # 用df.columns迭代列名更清晰,和for name in df效果一致
    result = my_function(vector1, df[name])
    new_df[name] = function2(result)
# 最后将字典转为DataFrame
new_df = pd.DataFrame(new_df)

方法2:用Pandas原生的apply(更简洁高效)

如果你想摆脱循环,用更符合Pandas风格的写法,apply函数可以直接对每一列执行自定义逻辑,代码更短,效率也更高:

new_df = df.apply(lambda col: function2(my_function(vector1, col)), axis=0)

这里axis=0表示按列处理,col就是每一列的Series对象,完美匹配你的my_function参数需求。

这样处理后,就能得到你想要的、以原列名为列名的新DataFrame啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:27:41