遍历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
相关产品推荐
相关产品推荐

