在循环中覆盖现有的数据帧

时间:2018-04-16 20:55:20

标签: python pandas

我正在尝试转换各种数据帧中的元素(将数值标准化为介于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'])

1 个答案:

答案 0 :(得分:0)

在以这种方式迭代列表时,您无法更改列表的元素。搜索"更改列表元素循环python"对于一堆好的堆栈溢出问题,为什么会出现这种情况。我的理解是" hi"是值复制的,而不是对原始变量的引用。

如果要迭代地修改列表中的元素,可以尝试ErrorObservable或列出推导。您可能希望创建列表字典并对其进行迭代,而不是使用变量名来跟踪所有列表,如建议here