Python 为什么可以';我是否在迭代数据帧时添加新列?

Python 为什么可以';我是否在迭代数据帧时添加新列?,python,pandas,Python,Pandas,我想在迭代时向一个新列添加一个新列: for index, row in df.iterrows(): row["newcolumn"] = row["oldcolumn"].normalize() #normalize() is a custom function 然而,这让我的df没有改变。为什么会这样?将loc与df一起使用: for index, row in df.iterrows(): df.loc[index, "newcolumn"] = row["oldcol

我想在迭代时向一个新列添加一个新列:

for index, row in df.iterrows():
    row["newcolumn"] = row["oldcolumn"].normalize() #normalize() is a custom function

然而,这让我的df没有改变。为什么会这样?

loc
df
一起使用:

for index, row in df.iterrows():
    df.loc[index, "newcolumn"] = row["oldcolumn"].normalize() 
但如果不存在某些矢量化解决方案,则更好地使用:

df["newcolumn"] = df["oldcolumn"].apply(normalize)

请参见注释2:您不应该修改您正在迭代的内容。这并不能保证在所有情况下都有效。根据数据类型的不同,迭代器返回的是一个副本而不是一个视图,对其进行写入不会产生任何影响。为什么要在逐行迭代时添加列?您只需执行
df['newcolumn']=df['oldcolumn']即可。normalize()
似乎是一个XY问题。请用一个最小的(但完整的)示例解释基本原理,我们可能会建议更好的工作流程。