Pandas - 创建新列

7

我一直使用以下方式在pandas中创建新列:

df['new_column'] = value

我正在使用这种方法,但是收到了设置副本的警告。

有什么方法可以创建新列而不创建副本吗?


12
这种方法是数种正确方法之一。你收到警告是因为“df”是其他东西的副本,现在你正在尝试更改“df”。你应该确保你能够接受“df”与你从中复制它的内容被分离开来的情况。一旦确定好了,你可以使用 df.is_copy = None 或者 df = df.copy() 的方式。当然还有其他处理方式,我通常喜欢采用这种方式来确保我不会再看到这个警告:当我从其他来源创建"df"时,我通常会使用 df = other_df.loc[:, :] 的方式,使用"loc"将其分离。而 df = other_df[my_cols] 则不行。 - piRSquared
请提供Python和Pandas的版本,以明确缩小警告的根源。 - Leb
我理解这个问题的意思是:如何对现有的DataFrame进行原地修改,其中修改是通过为现有的DataFrame分配更多的内存来创建一个新列,而不是复制它。 - ely
1个回答

16

尝试使用

df.loc[:,'new column'] = value

正如 piRSquared 的评论所说, df 可能是另一个 DataFrame 的副本,并且当您将值设置为 df 时,它可能会发生所谓的链式索引。 有关详细信息,请参阅 pandas 文档


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