向Pandas DataFrame添加列而不改变原始数据

4

当我们需要向DataFrame中添加一列时,通常会写:

df['newcol'] = 123

这会改变(突变)原始的df对象,这并不总是理想的。

有什么快速和惯用的方法可以做到这一点吗?这里有一个选择,但它比上面的赋值慢大约10倍。

df2 = concat([df, DataFrame(123, index=df.index, columns=['newcol'])], axis=1)
2个回答

9

那么对于copy()方法呢:

df2 = df.copy()
df2['newcol'] = 123

1
谢谢。我会采用这个答案,因为没有其他答案,但我希望有更好的方法。 - Victor Olex

4
你可以使用assign方法来实现:
df2 = df.assign(newcol=123)

它是否像 .copy() 一样复制 df 数据到内存中?还是像过滤器一样创建原始数据的视图 - Dzmitry Lazerka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接