假设我有以下代码:
import pandas as pd
mylist = [item for item in range(100000)]
df = pd.DataFrame()
df["col1"] = mylist
mylist
中的数据在分配给df["col1"]
时是否已复制?如果是这样,有办法避免这种复制吗?
编辑:在这种情况下,我的列表是字符串列表。从这些答案中得到的一件事是,如果我改为创建一个由这些字符串组成的numpy数组,那么不会发生重复数据,我称之为df["col1"] = mynparray
?
答案 0 :(得分:1)
将列表分配给系列时,将创建一个新的NumPy数组。该数据结构允许对数字类型进行矢量化计算。这样的系列被布置在连续的存储块中。有关更多详细信息,请参见Why NumPy instead of Python lists?。
因此,您将需要足够的内存来保存重复数据。这是不可避免的。无法将列表“转换”成适当的Pandas系列。
注意:以上内容与为序列分配NumPy数组时发生的情况无关。