我正在尝试转换各种数据帧中的元素(将数值标准化为介于0和1之间,单热编码分类变量)但是当我尝试在循环中覆盖数据帧时,它不会修改现有的数据帧,只有循环变量。这是一个虚拟的例子:
t = pd.DataFrame(np.arange(1, 16).reshape(5, 3))
b = pd.DataFrame(np.arange(1, 16).reshape(5, 3))
for hi in [t, b]:
hi = pd.DataFrame(np.arange(30, 45).reshape(5, 3))
但是当我运行此代码时,t和b都有其原始值。如何在循环中覆盖原始数据帧(t或b)?
我遇到的具体问题是在循环中尝试使用get_dummies函数时:
hi = pd.get_dummies(hi, columns=['column1'])
答案 0 :(得分:0)
在以这种方式迭代列表时,您无法更改列表的元素。搜索"更改列表元素循环python"对于一堆好的堆栈溢出问题,为什么会出现这种情况。我的理解是" hi"是值复制的,而不是对原始变量的引用。
如果要迭代地修改列表中的元素,可以尝试ErrorObservable
或列出推导。您可能希望创建列表字典并对其进行迭代,而不是使用变量名来跟踪所有列表,如建议here。